Store Header Items behind an RWLock
Store Header Items behind an RWLock

This removes the need to receive `&mut self` in `get_ref` and `get.`

Since the interior mutability of the RWLock is needed only once,
it is safe to change the lifetime of the pointer given by read locks
as by then all mutation has been done.

Since `set` still requires `&mut self` there is no way to use the interior
mutability of the RWLock to modify an existing `&`-reference. However,
the use of interior mutability in `get_ref` means that `get_raw` is now
actually an unsafe operation because the (now `*const`) pointer could be
invalidated by a subsequent call to `get_ref.`

Fixes #47

rschulman/hyper,hannobraun/hyper,tshepang/hyper,markuskobler/hyper,tempbottle/hyper,Keats/hyper,softprops/hyper,hannobraun/hyper,ianks/hyper,golddranks/hyper,reem/hyper,youprofit/hyper,hyperium/hyper,hannobraun/hyper,TimNN/hyper,Twey/hyper,Twey/hyper,peterhj/hyper,fuchsnj/hyper,Ryman/hyper,steveklabnik/hyper,nstoddard/hyper,sfackler/hyper,Twey/hyper,huonw/hyper,jmmaranan/hyper,mlalic/hyper,Keats/hyper,erickt/hyper,fhahn/hyper,hyperium/hyper,manuel-woelker/hyper,golddranks/hyper,lame-nickname/hyper,mikedilger/hyper,Keats/hyper,clatour/hyper,mfeckie/hyper,tshepang/hyper,mlalic/hyper,golddranks/hyper,bheesham/hyper,frewsxcv/hyper,nickgonzales/hyper,nickgonzales/hyper,retep998/hyper,markuskobler/hyper,tshepang/hyper,achanda/hyper,pcwalton/hyper,giftcards/hyper,yazaddaruvala/hyper,hyperium/hyper,pyfisch/hyper,markuskobler/hyper,servo/hyper,nickgonzales/hyper,nstoddard/hyper,Manishearth/hyper,yazaddaruvala/hyper,PeterReid/hyper,mitsuhiko/hyper,yangxingpping/hyper,mre/hyper,mneumann/hyper,bonifaido/hyper,fengsp/hyper