Scoped enum support: boost::underlying_type.

Use boost::underlying_type if the standard <type_traits is not available (or
claimed not to be available by Boost) and the Boost version is at least 1.56,
where this feature was added [1]. There is this caveat in the documentation:

> Unfortunately, there are configurations which implement scoped enums but not
> std::underlying_type. In this case boost::underlying_type has to be
> specialized by user. The macro BOOST_NO_UNDERLYING_TYPE is defined to indicate
> such cases.

[1]: http://www.boost.org/doc/libs/1_56_0/libs/core/doc/html/core/scoped_enum.html#core.scoped_enum.acquiring_the_underlying_type_of
build: Prefer source tree over installed headers.

Fix having to do "make install" before changes in headers would be applied to
the build, leading to inconsistent library/header configurations before a second
"make && make install". This situation arises when luabind and Boost are
installed to the same location, which they are by default on Linux
(/usr/local/include).