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