Enhancement (DELETE) and Bug fixes (around POST response)

1. In fetch(), the check for negative response to raise HALNavigatorError,
       if raise_exc and not self.response:
            raise HALNavigatorError(self.response.text,
                                    status=self.status,
                                    nav=self,
                                    response=self.response,
            )    
   Is not too late in the flow?. I feel it should be checked before processing the response body 

2. PostResponse can have properties, hence implemented __call__ to return properties

3. DELETE method is similar to POST from Navigator perspective (non-idempotent) 
  Hence,
         a) Reused logic from POST to implement support for DELETE
         b) renamed PostResponse to HALResponse 
         c) renamed  create() to post() for clarity
   In order to provide backward compatibility, I created alias "create"  to "post"

4. HALNavigator should not allow POST if the uri is templated. The check for templated_uri 
   was missing. Created a wrapper function (@template_uri_check) to re-use for all methods - GET/POST/DELETE

TODO:
1. Enforce templated_uri check for all HTTP calls. Add test coverage 
2. a link usually have 'method' property (default to 'GET'), which can be used to restrict http operations. this helps to raise NotImplementedError and can have a controlled default function e.g autofetch
If rel supports more than one method, until we support to handle more than
one methods (list), they can get around with it.
If allowed method is not supplied
If one wants to use it for testing to confirm validation
 On 31 Oct 2014 08:39, "Josh Kuhn" <notifications@github.com> wrote:

> In restnavigator/halnav.py:
>
> > @@ -30,8 +30,9 @@ def autofetch(fn):
> >      @functools.wraps(fn)
> >      def wrapped(self, *args, **qargs):
> >          if self.idempotent and self.response is None:
> > -            self.fetch(raise_exc=qargs.get('raise_exc', False))
> > +            self.fetch(raise_exc=qargs.get('raise_exc', False), strict=qargs.get('strict',True))
>
> when would you want to pass strict=False?
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/deontologician/rest_navigator/pull/8/files#r19656359>.
>