Support bidirectional string/number conversion
Fix error in algebra solver
Support observer override for properties and keys

Override the behavior of observing the key of a map with
`map.observeKey(key, emit, source, parameters, beforeChange)`.  Override
the behavior of observing a property by implementing
`object.observeProperty(name, emit, source, parameters, beforeChange)`.
Both must be implemented on the prototype, not directly on the instance
to help distinguish object literals.
Improve inline documentation

All of these markings made it easier to explain the code in review.
Allow underscore in a property name
0.1.6