Merge pull request #56 from chipdude/master

metric renovation
use rvalue references for forwarding
dont use boost::iequals because it uses std::toupper which is amazingly wtf slow. replaced with ascii_iequals
improve ascii_iequals to not allocate memory
better test