Logging custom annotations for PHOENIX-1198

This PR adds custom annotations to log lines generated in Phoenix's client-side code. It builds on PR https://github.com/apache/phoenix/pull/13 and uses the same mechanism to pass custom annotations to connections. These custom annotations are only added to client-side code logging that is within the context of a user operation (meaning a PhoenixConnection is available). No new log lines are added here. Only existing log lines are changed.

Usage:
1. Add custom annotation properties when creating a Phoenix Connection. e.g. `phoenix.trace.custom.annotation.a1=v1`
2. Log lines in (some of) Phoenix's client-side code would look like this: `{a1=v1} something logged`

Ignore the following files here, since they are covered in PR #13: BaseTracingTestIT.java, PhoenixTracingEndToEndIT.java, TraceReader.java, Tracing.java, JDBCUtilTest.java

@jtaylor-sfdc 


i think if you mark something as not null, you don't need to do the null check - kind of the deal with programming by contract, ya?