Efficiencies, Optimizations, Etc.
- It's probably a bit early for this, but since I'm using the current syncing behavior to drive the abstraction, it shouldn't get in the way.
- IBlockChain now does the same thing as IChainStore when it comes to fetching things and waiting for them.
--- There's a TryGetX that should be quick but can fail, and a GetX that blocks indefinitely until it's available.
- Deleting StackItem in favor of FancyByteArray.
--- This required adding implicit conversions to and from bool, which is fine.
- Fixing up usings.
- ReadOnlySubList<T>'s GetEnumerator<T> method now returns a real IEnumerator<T>.
--- The "yield return" stuff was inefficient for something used as frequently as this is.
- HashCodeBuilder is now static and adds extension methods for int.
--- Since GetHashCode is called so frequently, having to do N allocations for N fields would wreak havoc on the garbage collector.