Feature interfaces

This is incomplete as I add the PR, but I'm losing track of where I am with it.

@csdco has expressed an interest in this, and a fresh pair of eyes would help.

Currently, there are interfaces for *most* of the framework. While doing this (twice), I've started to question the need for some interfaces, the Collection class doesn't really need one, as it's a core component IMO. Many classes using it have interfaces, and if these were replaced, technically the developer could just use their own collection class.

You may also notice that I have blank interfaces for Cookies and Headers. I want to have a play with how this is currently implemented, and when done, there will need to be interfaces.

I think I have missed some parts, more than likely around the Request and Response area, but I can't tell now.

I need some others to look over this and let me know thoughts and changes, and I can then get them done.

cc @codeguy