Better exeption message when the extension dex file does not exist

Summary:
Fail fast and make it clear when the extension dex file can't be found.

The rest of the diff is just minor refactoring of the `ExtensionLoader` class.

Test Plan:
- Ran on of the Facebook end-to-end tests using an extension.
- Changed `ExternalStorage.getExtensionDex()` to return a wrong filename. Ran one of the Facebook end-to-end tests. Saw an exception with the correct message:

  "Extension dex file not found, you need to push it to the device first"

Reviewers: ainsej, kumar.rangarajan, juyuan.yang.9, asm

Reviewed By: asm

Differential Revision: https://reviews.facebook.net/D29631
Introducing package per component.

This commit is having no functional change, it is introducing a defined package per module.
client:     --> io.selendroid.client
grid:       --> io.selendroid.grid
server:     --> io.selendroid.server
standalone: --> io.selendroid.standalone

Customers using the new version have to refactor their code, but it is necessary and leads to cleaner code.

So therefore it is the right thing to do.
Merge pull request #725 from selendroid/refactor/package-structure

Introducing package per component.
Update changelog.md
Cleaning up package refactoring

server.server packages are now directly located in the server package.
Simpler handlers in selendroid-standalone

Summary:
- Make logging of requests in selendroid-standalone consistent by doing it in the `BaseSelendroidServerHandler` super class.
- Rename `RequestRedirectHandler` to `ProxyToDeviceHandler`. That class has nothing to do with redirection (as in HTTP redirect) so the current name is confusing.
- Random simplification of some messages and cleanup of typos (e.g. fix the spelling of "occurred").
- Rename "session key" to "session id". The [[http://www.w3.org/TR/webdriver/|WebDriver spec]] talks about ids, not keys.

Test Plan:
- `mvn clean install`
- Ran one of the Facebook end-to-end tests.

Reviewers: ainsej, kumar.rangarajan, juyuan.yang.9, asm

Reviewed By: asm

Differential Revision: https://reviews.facebook.net/D29697
Correctly wait for Selendroid standalone server to come up

Summary:
`HttpClientUtil.waitForServer` sits in a loop for three minutes and then quietly exits if the server failed to start.

This fixes it:
- Throw an exception if the server didn't start.
- Shorter timeout. Starting the server is as simple as starting a thread.

Test Plan:
- `$ mvn clean install`
- Ran one the of the Facebook end-to-end tests.

Reviewers: asm

Reviewed By: asm

Subscribers: DominikDary

Differential Revision: https://reviews.facebook.net/D29739
Catch Errors in SafeRequestHandler
Adding log message to indicate FolderMonitor has been started.

Signed-off-by: Binh Vu <bvu@paypal.com>
Merge pull request #733 from binhvu/master

Adding log message to indicate FolderMonitor has been started.
Merge pull request #731 from mkonicek/master

Catch Errors in SafeRequestHandler