Klokane/issue230 header names case insensitivity

fix issue #230 - bug with header names case insensitivity.
There are 2 possible ways to fix problem
 - convert all headers to lower/upper case, but there is problem with backward compatibility
 - compare header names in case insensitive way

Second way is used in this solution to be backward compatible

Main changes are in HeaderParser.h file, in methods findHeader() and isAllowedMultipleDefinition()

Due to limitation of C++ 98 - missing function<>/bind<> functionality i slightly modify functors MatchFirsts and MatchFirstWith to allow inject comparable 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
not really a policy here (yet) but I have noticed you are sometime using `class` and sometimes `typename` so I was wondering whether there is some reason behind this or just inconsistency