Add freelist cache.

This commit adds a cache to the freelist which combines the available free pages and pending free pages in
a single map. This was added to improve performance where freelist.isFree() was consuming 70% of CPU time
for large freelists.
Merge branch 'master' of https://github.com/boltdb/bolt into free-cache
Clean up freelist reindex.
Merge pull request #215 from benbjohnson/free-cache

Add freelist cache.
Allow freelist overflow.

This commit is a backwards compatible change that allows the freelist to overflow the
page.count (uint16). It works by checking if the overflow will occur and marking the
page.count as 0xFFFF and setting the actual count to the first element of the freelist.

This approach was used because it's backwards compatible and it doesn't make sense to
change the data type of all page counts when only the freelist's page can overflow.

Fixes #192.
Remove ErrFreelistOverflow error.
Merge pull request #219 from benbjohnson/freelist-overflow

Allow freelist overflow.