WL#7280: WKB geometry container

Status: Complete

Implement wkb containers which conforms to boost.range concept, so as to be used
as adapters between existing wkb geometry data and boost geometry algorhtms.

The aim is to avoid conversions between wkb enconded byte string and boost
geometry objects, which is how existing #7220/#7221/#7236 work logs handle the
interactions between bg geometries and mysql geometries now. Such conversions
can be expensive, especially considering the amount of geometry objects can be 
huge.

We can achieve this by implementing STL-like containers using the wkb encoded
byte string as container data, and implementing iterators which can iterate in
the wkb encoded byte string. Then we can use these containers to implement our
version of point/linestring/polygon/multipoint/multilinestring/multipolygon
classes, and objects of these classes take a wkb pointer to obtain its data. And
then via standard iterator interface, they can be used by boost geometry
algorithms to do gis calculation.

Because the boost.range needs random access iterators, and boost geometry by
default inherit from std::vector, I decided to implement a simplified vector
(my_wkb_vector) which has an iterator type of random access concept, the
container object is created using wkb pointer, and then caller can create
iterators with begin/end/rbegin/rend and do random iterator access.

The iterators can be readable and writable, the vector has a minimal set of
required methods.

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

None required.