Changes
--------
* Added support for `Union` types. It's recommended to place more complex variant types at first place like `Union[Dict[int, int], List[int]]` not `Union[List[int], Dict[int, int]]`. When optional type validation is implemented it will be possible not to follow this rule.
* It is now possible to use `serialize` and `deserialize` options for any third-party types and `SerializableType` classes if you need it for some reason.