Use ValidationError instead of IntegrityError

IntegrityError should be used for legitimate database and data integrity errors.
Provide ObjectDoesNotEExcept on ObjectDoesNotExist explicity
Make geocode_address return a consistent type

Fixes #269 on github.

geocode.geocode_address now always returns a 3-tuple. the
vendor.apply_geocoding method now handles this data more easily and warns when it
does not perform geocoding. Add unit tests to confirm this behavior.