Add time based UUIDs

See #5941.


Using SecureRandom as a UUID generator is slow and doesn't allow us
to take adavantage of some lucene optimizations around ids with common
prefixes. This commit will allow us to use a
timestamp64bit-macAddr-counter UUID. Since the macAddr may be shared
among several nodes running on the same hardware we use an xor of the
macaddr with a SecureRandom number generated on startup.
If we want everyone to use one implementation versus another, then I suggest adding a `static final UUIDGenerator DEFAULT = new ...` to the `interface`. That way anyone can simply reference it and we can avoid multiple instances all over the place. 

This should also hit at the point that @mikemccand suggesting that we should not hold ourselves to any specific implementation; users could reference the constant and always be using the latest version _and_ never have to actually know what implementation that is.