Added new encoding mode - #unknownAsNil and #loose.

- If encodeMode is #unknownAsNil, unknown types(classes) will be encoded as nil values.
- If encodeMode is #loose, #asMpConverted will be sent to the unknown class's instances. You can override the method to convert your instance as MessagePack-compatible value. For example, this mode allows encoding IdentityDictionary as MessagePack map.