[WIP] Add support for type parameters

This is work in progress initially discussed in #18.

Done so far:

* Added support for type parameters (in Type classes)
* Refactored `DateTimeType` to accept format option 
* Extracted common date/time code to parent `DateTimeType` class
* All date/time types behave like before by default but accept format parameter which alters the bahvior

To be done:

* Add type parameters to the metadata
* Pass parameters to `convertToPHPValue()` and `convertToXmlValue()` methods in the `XmlMarshaller`