Allow relationships on dicts and lists.

Charlatan 0.2.4 introduced the ability to define dicts and lists, but
they couldnt reference other objects with `!rel`. This enables that
functionality.

This also adds a bunch of testing stuff so we can write unittests
against all this.

Also included:
 - PEP8 cleanup