Testing last component
Removed init function

You can just init at declaration time
Separated caller info and stringing, added tests
Flag enable/disable/check test

Also simplified the check lookup
Added benchmark for flag tests
Added thread safety to logging checks

I'm using atomics and unsafe here.  It's the least overhead and updates
are expected to be quite rare.  I did several strategies to see which
worked best.  The results (uncontended) are as follows:

Unprotected

BenchmarkFlagLookupMiss  100000000        11.6 ns/op
BenchmarkFlagLookupHit   100000000        11.7 ns/op
BenchmarkFlagSet          50000000        62.9 ns/op

Mutex

BenchmarkFlagLookupMiss  20000000        121 ns/op
BenchmarkFlagLookupHit   20000000        123 ns/op
BenchmarkFlagSet         10000000        171 ns/op

RWMutex

BenchmarkFlagLookupMiss  20000000        127 ns/op
BenchmarkFlagLookupHit   20000000        127 ns/op
BenchmarkFlagSet         10000000        206 ns/op

Atomic

BenchmarkFlagLookupMiss  100000000        20.1 ns/op
BenchmarkFlagLookupHit   100000000        20.8 ns/op
BenchmarkFlagSet           2000000       799   ns/op