Use Protocol interface to wrap protocol response

Also removed leejo/data from rest sub-package
Add protocol response and error to rest

Added 2 interface and default implementation for users to just
use as their own protocol.
Rewrite rest.Pat with rest.WriteResponse

Allow user to inject their own response status code with their
own implementation of `Response`. And keeping a good default
status code practice at the same time.