initial merge of locations code

This is an initial merge of the two projects. There is definitely type overlap and some collision between the json types. Some of the leaf types can be shared as-is (Address for instance) but the root objects have differences to be sorted out.