Initial commit.

This initial commit only supports the geo database for lookup, but it
sets the basic infrastructure down to support more.
Something with the XML stuff didn't work on either travis (maybe with hhvm?) or scrutinizer).  That extension wasn't available or behaved differently.  Can't remember the details, but that would need verification before we could add the 100% check back.  Scrutinizer makes it pretty easy for us to see code coverage though.