Internal Data Structures

Various data structures to allow performance improvements.
I am committing these separately from the code that uses it to keep the pull requests simpler.
Nothing in RxJava depends on these classes in this commit.