rename filterValues to filterCells
optimize the access patterns of filterKeys and filterCells
add Series.filterValues method

complements filterKeys and filterCells
refactor SeriesBuilder

factor out an abstract class so that we can build series with either ordered or unordered indexes
further expand series builder to build dense series

- add super type for sparse and dense builder
- generalize return types of builder factory methods
- make use of dense builder for filterValues
add isOrdered method to Index

- set visibility to package protect as this is really for internal use
- this should enable optimizations elsewhere to preserve an ordered index during transformations on Series
turn Ordered and Unordered indexes into regular classes

this fixes the visibility widening that was occurring on keys and indices, which were declared to be package private in the super type
Use smart SeriesBuilders, which preserve index orderedness

pick the series builder of the output series based on the index orderedness of the input series
tidy up filter methods on series

- add filterEntries
- rename to filterBy(Keys | Cells | Values)
- add scaladocs