Add ListIntBench
all creations of mirrors (except for the one in Tools.scala) are now replaced

with a call to the `scala.pickling.package.currentMirror` macro that
does all the optimizations necessary

Conflicts:
	core/src/main/scala/pickling/Macros.scala
	project/Build.scala
Mindless doubles!

Moves tpe pickling into every case of a tag.key match.

If a performance regression exists, it's negligible. On travInt,
I've been getting 92-96 for this commit's parent and 95-99 for the commit
itself. On evactor2 there was no difference.
Initial support for object graphs with loops

- Can select between shareEverything and shareNothing:
  noRefs => shareNothing
  yesRefs => shareEverything

- Don't share arrays.
  Sharing arrays belongs to the same category of impossible as sharing
  lists or vectors. It is very time-consuming to find whether these things
  are equal, and in case of arrays this is beyond normal hashCode().

- Add 4 tests.

There are two possible unsyncs between pickling and unpickling, which can
lead to situations when pickler writes in one order and unpickler tries to
read in another order.

1) Pickler writes all fields in the order provided by cir.fields.
Unpickler first reads all non-loopy fields, filling in loopy ones with
nulls, and only then it reads the loopy fields.

2) Pickler registers picklees before pickling, whereas unpickler
registers unpicklees after their instantiation (i.e. after all non-loopy
fields are filled in).

1 is an easy fix => just take the pickler and reorder fields according
to loopiness. However when I encountered 2, I thought it's going to be
the bane of string sharing. Luckily, after some pondering I arrived at
a pretty decent workaround. Before unpickling we first preregister
the thing we're unpickling, putting null into unpicklees and advancing
nextUnpicklee, and then after we instantiate an unpicklee, we rewrite
that null with the actual instance. Since we only use non-loopy fields
during instantiation, noone will be able to observe the null, so we're ok.
Support for sharing in interpreted picklers

- Note: sharing canCauseLoops between macros and runtime reflection
  required quite a lot of code.

- Fixes unsoundness in canCauseLoops:
  We should assume that any non-final (or non-finally sealed) type can
  give rise to loops. Otherwise, e.g. Any ends up being safe :)

- Adds picklee cache cleanup to pickleTo.

- Adds TODO: support for dynamic unpickling settings.

- Adds TODO: initialization order wrt nested objects.
Ref support for JSON

Fixes Array[Int] indentation in JSON.
ATTENTION!! removes the runtime project - it's unused anyway
Holy mother of jesus. It now works for general graphs and custom picklers.
Fix List pickler
Fix problem with nested collections
Clean up tests

- Simplifies graph tests.
- Removes brittle manual generics test.
Add data for graph benchmark
Adding the Wikipedia graph reader and benchmark- let the graphs begin!

- Adds Kryo benchmarks.
- Adds both Kryo and Java versions of WikiGraph benchmark.
Optimization in BinaryPickleFormat
brings 2.10.x up to speed with 34580a085e@oopsla2013-master
strives to achieve source parity with master
Complete support for arrays of primitives
Calculate known size when pickling arrays of effectively primitive element type

Yields a slight perf improvement of about 5% on arrayInt.
let's pretend this never happened, okay?
Add the sparklr* family of benchmarks