Maven aggregation/semver compatibility

Two main changes here: First, the projects have been changed to reference the
parent POM by file path, and changed to use properties from there to decide
on dependency versions.

Second, I reduced the version number for the components to 0.0.0, to follow
the semver specification (http://semver.org). With a major version of 0, there
is effectively no standard API, so we can change whatever we want.

Signed-off-by: stuyvenberg <stuyvenberg@wisc.edu>
ngon rewrite (2/many)

I have no idea what all I changed. But it was a lot. Unshortened the 'def's,
made them interfaces and provided generic implementations. Major changes to
JSONDatabase (considering making it abstract and adding JSONFilesDatabase
subclass). Oh, that one also works now, more or less.

Signed-off-by: stuyvenberg <stuyvenberg@wisc.edu>