Improve install rules and add support for building FlatBuffers inside another project

Generate the files needed by another cmake driven project to
find_package(FlatBuffers), either external or when both projects are
subdirectories of some larger project.

Support 3 methods of using FlatBuffers
find_package(FlatBuffers) - pointing to the INSTALL location
find_package(FlatBuffers) - pointing to the BUILD directory
add_subdirectory(FlatBuffers) - where the project using
FlatBuffers can simply set FlatBuffers_DIR to the build subdirectoy
The main difference is that the build dir versions need the source tree
include locations instead of the install tree.

We generate the following files in the BUILD directory
as well as the INSTALL tree

FlatBuffersConfig.cmake
FlatBuffersConfig-version.cmake
FlatBuffersTargets.cmake
more libstdc++ fixes, use boost function, string::rbegin