Partial implementation of contexts: a new feature to simplify common conversions

This commit implements contexts as a way to allow conversion between two unrelated
dimensions (e.g. time and length). contexts are specified by the source and
destination dimensions and the conversion function. These functions are used
in case

The context is implemented as a graph (not just isolated pairs) to enable
conversion from A -> C, if A -> B and B -> are defined.

Still to be done:
- a proper API to define contexts
- parsing of context in the defintion file
- default context
- parameterized contexts

See Issue #65