Added microsecond support for JSON serialized DateTime objects

When using the JsonFormatter, all records are encoded using json_encode(). For the timestamp this would mean that a DateTime object results in something like:

```
    "datetime": {
        "date": "2014-07-31 11:15:22",
        "timezone_type": 3,
        "timezone": "Europe/Amsterdam"
    }
```

This way we 'loose' the ability to format the timestamp with microsecond precision. A way to avoid this loss of detail is to extend the native DateTime class with one that implements [JsonSerializable](http://php.net/manual/en/class.jsonserializable.php) which appends the microseconds.

A problem was that using the DateTime::createFromFormat() always returns the 'native' object, not the extending class, so we have to override the createFromFormat() function.

Result:

```
    "datetime": {
        "date": "2014-07-31 11:15:22.787467",
        "timezone_type": 3,
        "timezone": "Europe/Amsterdam"
    }
```