WL#6968: InnoDB GIS: R-tree index support

Status: Complete

This is the work for R-tree search and key positioning. It is responsible for
all the key positioning for search, DML (delete/insert/update) and purge.

We also continue to use the cursor APIs in the current B-tree interfaces, but
such cursor positioning is more of an internal notion of being able to position
the search position and continue from where we left last time, rather than the
"cursor" in the external SQL language.

The R-tree search and traverse is different from that of B tree in the sense that
a search criteria could be met in multiple leaf pages of different search paths.
A querying bounding box can intersect or contain in multiple leaf and non-leaf
bounding boxes. In such a way, we will need to enhance/modify/replace the
row_search_for_mysql() and btr_cur_search_to_nth_level() to do the correct work.

When comes to positioning, spatial data makes almost impossible since naturally
there is no ordering for spatial/multi-dimension data. However, we will need to
impose artificial binary orders so that we can position/locate our record in a
page. By saying that, there is no way we can store/restore any cursor in a page
due to the nature how R-tree splits. So various schemes/rules are designed to
accommodate that, and will be discussed in HLD

User Documentation
==================

http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-5.html
http://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-model.html
http://dev.mysql.com/doc/refman/5.7/en/innodb-predicate-locks.html