If an object has a __json__ method, use it when encoding

It should return a raw JSON string which will be directly included in the resulting JSON when encoding.

Similar to #130, but it allows an object to return already encoded string which is then included as it is in the output. This allows one to pass embed existing JSON strings inside a larger structure, without a need to deserialize and serialize again.