v1.14.4 Null Pointer Fix and better ID determination

v1.14.3
I've hopefully fixed the recent Null Pointer Exception issues suffered by clients. Key changes:
 - We now use the application context rather than the context passed in directly.
 - We no longer set the static reference to the context to null in stopSession() to reduce the change of null pointer exceptions during asynchronous operations.
- I've also added if (CONTEXT != null) statements around the offending areas of code as an additional fall back to stop errors. As far as I can see there is no code using the static reference to CONTEXT without a protective if statement surrounding.

v1.14.4
While doing this work I noticed a number of edge cases regarding the determination of whether to use the Android AID or not. I have added additional logic which now means that once the UUID or Android AID is used once, it is locked. If in the future that ID is no longer available (e.g. Google Play Services is disabled) then analytics is disabled completely, to avoid the user being counted twice.