Klokane/issue230 header names case insensitivity

fix issue #230 - bug with header names case insensitivity.
There are 2 possible ways
 - convert all headers to lower/upper case, but there is problem with backward compatibility
 - compare header names in case insensitive way

changes are in HeaderParser, in methods findHeader() and isAllowedMultipleDefinition()

Due to limitation of C++ 98 - missing function<>/bind<> templates i slightly modify functors MatchFirsts and MatchFirstWith to allow inject compare Predicate.

To be backward compatible - default compare method is used std::equal_to.<>

There is one more possible improvement into future functor IsIEqual<> should use locales via facets while std::to_lower is invoked.

It is open to discusion