Bug fix

`manager` is a static on the class, not on individual objects.
It may actually exist at runtime on some objects, hence not noticing it earlier.
But it doesn't always, particularly after (un)serialization.
Fix serialization issues when using compiler cache

Basically an __cache__ field was being added, and also
after the first run a `posts:ManyToMany<A,B>` was creating
an `_posts:ManyToMany<A,B>` which was also being added.

We now explicitly ignore the cache field.
And we don't create an `_posts` field, we just use `posts` as is.
Get BelongsTo, HasOne and HasMany relationships to use normal var

(Not create a separate private `_$name` var).
Use metadata instead of magic static arrays.

This has a few advantages:

- It's what metadata is made for, it's less hacky, etc.
- We add it during onGenerate(), which requires one less `Context.getType()` call, which is good because that extra typing step can sometimes confuse the compile
- It's generally simpler code because we add everything at compile time, so we only deal with fully typed classes, not a mix of super classes (may or may not be typed) and fields (mid-typing).
Follow typedefs when looking for related models
Avoid some cases where we have a null value that breaks the macros.
Updated README
1.0.0-rc.7