Many significant improvements, including:

* Applying multiple decorators dont cause decorated function to be called multiple times.
* Add typecheck decorator which could be used instead of accepts/returns and if called
  without arguments will try to build type signatures from function annotations.
* Type checking decorators now handle keyword arguments and default values.
* `TypeCheckError` now subclass of `TypeError`
* `rec_type_check` and `check` methods of `type_spec`'s subclasses now returns number of
  matched items.
* Strictness level is now controlled by global variable `__typecheck_error_level`