Forward reference handling

Here is a first implementation of forward reference handling, with test cases. There's also test cases in the failing packages that demonstrates the current lack of support that I know of. Currently properties of an Array type, ArrayBlockingQueue and EnumMap are not implemented, due to lack of time. Each custom container deserializer must handle unresolved forward reference, but the recipe is the same (look at CollectionDeserializer and MapDeserializer).

Also, I didn't have to modify IdKey as I first thought.

Fixes #351