Implemented the changes suggested in the pull request:
* Some long methods were broken into smaller ones.
* Support for screen rotation, also keeping scroll position
* Fixed some crashes on screen rotation and unavailable GPS location.
* Created helper classes for HTTP requests.
* SearchEngine not getting listener on constructor anymore.
* Created an onFailure callback for services.
* Changes to validate parameters on the top of the method.