Reference properties

This refactors the existing `ReferenceProperty` implementation to fix a plethora of issues it had and make it more useful overall.  It also extends CZML capabilities for working with references, as discussed in AnalyticalGraphicsInc/czml-writer#66

1. You can now reference sub-properties, not just top-level properties.
2. It properly raises definition changed event (it previously did not).
3. It now throws if a reference property is invalid, which is better in practice than silently returning undefined, as it did previously.
4. CZML now lets you reference any leaf property from any other leaf property.  i.e.  To objects can share the same position property.
5. CZML can now reference "local" properties, i.e. billboad.scale can reference model.scale on the same object in order to keep them in sync and send less data.

CzmlDataSource.js is a little unwieldy, but I'm hoping to do a major clean up of the code for 1.0.  Hopefully  it's not too hard to review the changes currently needed for the above.