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.