New Features
---------------
- `register_type` and `Symbol.register_type` can be used as a decorator.
- `Symbol.var("x")` can create unique variable `x`.
- Many missing AST types are supported, such as `%` (mod operation), `+=` (in-place operations) and unary operations.
- Validators are implemented in `Expr` to assert correct grammar for certain header (although they are not perfect). For instance, `Expr("getattr", [Symbol("x"), "name"])` used to return `:(x.'name')` but now it returns `:(x.name)`.
- Many special methods, such as `__int__` and `__hash__`, are correctly converted to `int(X)` in macro.
- `Macro` can used as a field of a class. Unique `Macro` object will be created for different instances.
Changes
---------
- Attribute `_last_setval` is moved to `Macro`.
- Method type definition is changed to delayed definition.
- Type mapping of `symbol` now uses dictionary as much as possible.
- The `type` keyword argument in `Symbol` constructor is deleted because it was not used.
Bug Fixes
----------
- Boolean operations (`and` and `or`) could not be parsed.