Support Single-Threaded Functionality

Change Summary:
- Added a public BraveContext object that doesn't require a single-threaded environment to function.
- Added a SimpleServerAndClientSpanStateImpl class to facilitate single-threaded context
- Modifed AbstractAnnotationSubmitter to use a java.nio.Charset when calling getBytes to avoid having to catch an UnsupportedEncodingException
- Modified ServerTracerImpl constructor argument order to be consistent with ClientTracerImpl and updated all references.