Removing immutable collections

- This is a big one.  I don't want to have to pass along MS licensing
issues that come with the Immutable Collections framework.  I figured
now would be a good time to drop it, rather than later.
--- To this end, things are arrays by default now.  Some of these will
wind up becoming not-arrays later for security and reliability purposes,
but as you can see it's a huge update as it is.
--- This actually resulted in some hefty performance gains, in terms of
both CPU and memory (a consequence that should have been obvious going
in), possibly enough to justify bringing back the Bouncy Castle
implementation of secp256k1 later.
- Added some new helper methods for IEnumerable<T> to ease my
transition:
--- GetArray (extension method) is a drop-in replacement for ToArray
that skips the copy step if the source is already an array.
--- GetRange (extension method) a drop-in replacement for the
ImmutableList method of the same name (only valid on array sources).
--- ExceptWhere (extension method) is, a suitable replacement for
ImmutableList.RemoveAll.
--- ConcatenateData (static method on ByteTwiddling) concatenates
multiple subsequences of bytes into a single byte array.
- As a note, in just a few short minutes this runs into a block in the
90,000 range of heights that seems to hang indefinitely on my machine.