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.
Thinking more about this: is it really necessary to use paranoia-concurrency here?

What's really wrong with a simple volatile lastTimeStamp?  Yeah, it won't be perfect, and sometimes it will move backwards a bit because of thread switching from the compare to the assign, but this is in fact harmless in practice, because after this ID is assigned we go on to index the doc and there's no temporal order guaranteed.