fix orderAndEqualConsistent law

Cherry-picking pull request #620 (df508e5)
use `Nil#::` instead of `List.apply`

`List(1)` is equivalent to `List(Predef.wrapIntArray(Array(1)))`.
`Nil#::` is more efficient

Cherry-picking 56d963e
`apply` methods for Unapply companion & friends.

Cherry-picking #621 (e1c6abc)
fix ==>>#merge bug

https://github.com/haskell/containers/blob/ghc-7.2.1-release/Data/Map.hs#L2147

Cherry-picking 4a894da
Saner thread naming in DefaultExecutorService

The previous Strategy.DefaultExecutorService asked for a new thread
factory for each new thread created. The result was threads with names
like (on a 4-cpu machine)
pool-6-thread-1
pool-7-thread-1
pool-8-thread-1
pool-9-thread-1
This change saves one defaultThreadFactory and reuses it for thread
creation, so that the threads come out named
pool-6-thread-1
pool-6-thread-2
pool-6-thread-3
pool-6-thread-4
This makes debugging easier, because one can see which threads are
grouped into the same pool.

Cherry-picking #631 (06c037c)