Allow split nodes to be merged with the next node.

This commit changes the node.split() functionality to check if the next node has
available space and, if so, it will merge the newly split keys into the next node.

Previously, keys could be continually put into the left side of a split causing that
first half to split off small right side nodes. This was especially problematic with
databases with a high fill percent.
Fix merge-split spill issues.
Merge pull request #181 from benbjohnson/split-merge

Allow split nodes to be merged with the next node.
Add fallback for O_DIRECT in Tx.Copy().

This commit adds the ability for Bolt to fallback to using a regular file open if Tx.Copy()
errors while opening with O_DIRECT. This only affects Linux.
Merge pull request #183 from benbjohnson/copy-fallback

Add fallback for O_DIRECT in Tx.Copy().