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.
Merge pull request #1400 from benjchristensen/internal-data-structures

Internal Data Structures