Handle 0 results for searches, better multiple result handling

This also reduces everything to a single `results` object, and introduces an `error` event for handling errors from the geocoder.

This also implements a fix from @alaframboise for getting address data.