Making the SDK Pluggable

This is a fairly large pull request, that's going to be hard to review. I'll try my best to summarize the changes.

What has changed:

* ```ForceApp``` has been renamed to ```SalesforceSDKManager```, and ```ForceAppWithSmartStore``` has been renamed to ```SalesforceSDKManagerWithSmartStore```.
* Consuming apps don't need to extend ```ForceApp``` to consume the SDK anymore. Apps need to simply call the ```init()``` method. I've updated the sample apps to reflect the new model.
* Moved login options for native apps to the XML layer. Default options are provided in the SDK in ```bootconfig.xml```. Consuming apps would override these values and supply their own. ```BootConfig.java``` has been modified to consume native login options from XML.
* Renamed ```NativeMainActivity``` to ```SalesforceActivity```. Created ```SalesforceListActivity``` and ```SalesforceExpandableListActivity```. Moved the native activities under a new dedicated package.
* Moved ```SalesforceDroidGapActivity``` under a dedicated package for hybrid activities. Updated package paths in ```AndroidManifest.xml``` to reflect these changes.
* ```SalesforceSDKManager``` doesn't extend ```Application``` anymore. Created a new interface (```KeyInterface```) that has one method - ```getKey()```. Updated sample apps to implement this interface (```KeyImpl```).

What's coming up in the next pull request:

* Fix the tests (if any need to be fixed).
* Lose ```MainActivity``` and make ```LoginActivity``` launchable via an intent.
* Clean up the permission sets in ```AndroidManifest.xml```.
* More cleanup.