import of Mercury v2 Agent
replacing the existing Eclipse project with a valid project and appropriate builders specified
increasing our API version to the latest, and dropping the minimum required API back to Eclair (API Version 7)
fixing a bug when launching the Agent on Eclair, where we cannot send a Parcelable as #obj in a cross-process Message

Instead, we need to use #setData to add the Bundle to the Message, and retrieve it with #getData on receipt. This will still work under newer API versions
fixing another instance of sending a Bundle in a Message as #obj, rather than #data
fixing a bug where ANDROID_ID is defined to be null under Eclair

This is apparently the case on some older devices, especially phones. We handle this gracefully, by providing a random identifier that will live for the duration of the Agent process.
fixing another instance where the ANDROID_ID was being directly reference, and proxy it through Agent#getUID()
add a constructor for the ObjectStore that allows it to be initialised with some data
fix a typo where the fromNative() method of a ReflectedArray was an instance method, not a class method
fix a bug where passing object directly to ReflectedArray.fromNative caused a stack overflow, because it didn't change the signature of the overloaded method
if EndpointManager#get() returns a null Endpoint, search for the id in the database before returning the default null; fixes an error when trying to access a newly created Endpoint
add an implementation of the DATA type in the protocol definition, which allows us to transfer binary strings
add a utility method to build a ReflectionResponse containing DATA
updating a couple of strings, to refer to an 'embedded server', rather than 'adb mode'
simply 'Embedded Server' is a better name on the home screen, than 'Start Embedded Server'
removing a large block of code in the onOptionsItemSelected() method of ServerActivity that was not used
remove some unused code from the MainActivity
tweak how we set the Agent context, to fix some weird state bugs

Occasionally, the enabled checkboxes for endpoints and the embedded server would lose their state and show disabled, even though the connection was still active. This was the case if you were running the agent for some time, but using other apps on the device.

I *suspect* that the MainActivity was being finalized, so when you re-entered Mercury it would call Agent.setContext() again and overwrite the endpoint/server parameter state in the Agent singleton.

Now, we will only overwrite those if they are null, which should set them when the app first launches then leave them alone. If the Agent is GC'd we have bigger problems anyway, because we'll lose track of the backing services.
using a custom icon for the notification of active sessions, which conforms to the Android design guidelines
swap out the green add icon for a New Endpoint, and replace it with one that corresponds to the guidelines; also push all menu options back into the menu so we get text descriptions alongside them