Non static Http classes, and other works

@codeguy I know the rule is to do single feature or implementation changes in separate branches, sorry for having three separate changes in one here.

I wanted to get the Http classes to be instantiated objects rather than rely on static methods as I tried to explain in my email. They seem to lend themselves more to that pattern IMO. Anyway, I got it working ok, so let me know if you think we could go this route here.

Also, as we discussed, I have the Collection extending Pimple now, more work could be done in the future to use more array syntax throughout (maybe?), currently works fine.

Also also, I've protected the Headers and Cookies instances in the Request and Response classes.

All unit tests pass, and after xmas, I will take a thorough look through to see if there is full code coverage with these changes.