Boost.Typeof registrations for Proto's types, and definition of the `BOOST_PROTO_AUTO()` macro.

For defining a local variable that stores a Proto expression template, deep-copying the expression so there are no dangling references.

To define a local variable `ex` that stores the expression `proto::lit(1) + 2`, do the following:

    BOOST_PROTO_AUTO( ex, proto::lit(1) + 2 );

. The above is equivalent to the following:

    BOOST_AUTO( ex, proto::deep_copy( proto::lit(1) + 2 ) );