Use CaseInsensitiveMultiDict for headers

(Re: issue #236)

First go at implementing this. Not 100% sure of the scope so there might be some features missing/extraneous items, would like to start discussion regardless.