Merge experimental branch into master.

This is mostly the work done by Dragan Nikolic: essentially the NineML reference implementation based on DAEtools, the addition of dimensions into parameters and state variables, and experimental support for specifying geometry and connectivity.