Beta Version of SDK for Android

Refs #1
@dotsbb I agree that you don't want to do massive synchronization here.  ConcurrentLinkedQueue would solve the problem of concurrent access on the queue object, but the queryParams Map is still an issue since it can be modified by any external set calls not to mention concurrent trackXXX calls.  

One way to solve that is to make the query params local per track method call and have any custom query params optionally passed in and merge those with a set of default params(essentially the params you have in beforeTracking).  The nice thing about this approach is that it requires no synchronization as it removes shared state across threads.  But then you also have your session member variable to worry about...

So at the end of the day, I don't know if it's worth the refactor as long as people are aware that they should perform their own synchronization.  I saw you added the comment and people can be mindful and manage thread safety of Tracker fairly easily if necessary.  If you do decide to refactor I'll be happy to continue the conversation.