uses boost::type_traits to strip const, volatile and reference from a type for the template functions

implements a neat getter and setter, to be elevated to flua and
maybe a namespace if Collaborator approves of changes

constants added and checks for per-channel throttling added

Still need to make sure all channel options are
checked against global maximums and minimums