WIP: Observable Chaining (a.k.a. "key path" observing)

You can now create chained observables, for observing "key paths"

You either:
chain(x).to({x in x.something}).to{ $0.sth.different }.afterChange ...

Or:
(x/{x in x.something}/{ $0.sth.different }).afterChange ...

to observe current value of x.something.sth.different
(where x, x.something and x.something.sth.different are observables)

TODO: decide on ownerships and fix retain cycles
Merge branch 'master' into chaining
ChainingProxy: allow chaining with non-optional path
Add tests for ChainingProxy: structs, optionals, owner, cleanup
ChainingProxy: make forward references weak, add strong back references

TODO: cleanup
Observable Chaining Cleanup

- api for adding/removing owned objects to subscriptions
- separate class for owning event reference
- name and filename changes
Update README.md with info about chaining
Merge pull request #1 from slazyk/chaining

Chaining of Observables ("key path observing")