Add feature selection for top-k frequent features

We can implement a form of feature selection by implementing an approach
that is similar to dictionary trimming, which can sometimes give us 90%
of the benefit of feature selection without the work of computing more
complex metrics. This implements one of the strategies in gh-23.

When I asked for advice on Stack Overflow on how to efficiently compute
the top-k most frequent keys in a dictionary that is constantly being
updated (as is in the case of an online learning algorithm), some of the
suggestions were **not** at all efficient or scalable.

It was suggested to try using the `collections.Counter.most_common`
method, but it must execute a linear pass over the dictionary each time
the method is called in order to recompute the most common values.

Another suggestion was to use `heapq`, but the method was complex and I
could not envision it being scalable when any term frequency value in
the heap might have to be updated during training.

Therefore, I came up with my own data structure that efficiently keeps
track of the top-k most common terms during training so that access time
during classification is constant running time.