Add sidejob:unbounded_cast variant
Use ETS table per worker

This commit changes sidejob from using a single ETS table with
different keys representing each worker, to using a single ETS
table per worker with static keys. The intention is to ensure
that false lock conflicts never occurs.

Specifically, the original design used a concurrency optimized table
hoping that accesses to disjoint keys would hit disjoint locks. In a
concurrency optimized table, BEAM breaks a table up into multiple
segments that each have their own lock. Keys mapping to different
segments therefore hit different locks. Unfortunately, there is no
guarantee that two keys map to separate, rather than the same,
segment. Likewise, in R15 there are only 16 such locks per table; with
R16 increasing this to 64 per tables.

This change allows sidejob to provide stronger guarantees about lock
conflicts without worrying about internal BEAM details. The expense is
additional memory overhead. A minor bonus is that this change allows
the keys used to access the ETS tables to be static atoms. In BEAM,
atoms bypass the normal hash logic when used as ETS keys.
Merge pull request #3 from basho/jdb-ets-per-worker

Add unbounded_cast as well as ETS-per-worker