Use RoaringDocIdSet instead of FixedBitset for caching.

The default DocIdBitSet used for caching is currently the FixedBitSet implementation. For very sparse or dense bitsets, there are better implementations.

Lucene currently uses WAH8DocIdSet. https://github.com/elasticsearch/elasticsearch/pull/7577 suggested that ES should also switch to that implementation. The PR was rejected, in favour of getting the RoaringDocIdSet from Lucene 5. Upgrading to Lucene 5 was done in https://github.com/elasticsearch/elasticsearch/commit/610ce078fb3c84c47d6d32aff7d77ba850e28f9d, and it does indeed use the RoaringDocId implementation. 

For ES users with large indices, it would be beneficial if the filter cache did not use so much memory, even before ES uses Lucene 5 (seems to be targeted for 2.0). This PR uses the RoaringDocIdSet from Lucene trunk (with minor modifications) instead of the FixedBitSet implementation. For the modifications, see inline comments.

I've ran the test suite locally a few times, and it works. I did see some issues, but fixed them.
Since the RoaringDocIdSet is copied from Lucene, I simply kept the Lucene license. I honestly do not know if this was the right thing to do, but it felt like the proper way to do it. Should the ES license be added as well?