Allow returning http errors with exceptions

before:
    def my_response_method(self):
        ...
        if error:
            return template, {'status'=400}

after:
    def my_response_method(self):
        ...
        if error:
            raise MyResponseError("bad thing happened")
where MyResponseError inherits from HTTPException
Fix: Preseve status code in header when != 200

before:
    reply: 'HTTP/1.1 400 Bad Request\n'
    header: date: Wed, 16 Apr 2014 00:30:07 GMT
    header: content-type: text/plain; charset=utf-8
    header: content-length: 286
    header: server: Python/HTTPretty
    header: status: 200
    header: connection: close

after:
    reply: 'HTTP/1.1 400 Bad Request\n'
    header: date: Wed, 16 Apr 2014 00:32:45 GMT
    header: content-type: text/plain; charset=utf-8
    header: content-length: 286
    header: server: Python/HTTPretty
    header: status: 400
    header: connection: close

Note how status and reply http did not match before but do now.
Implement ec2 dhcp_options