Extract RESTHandler and allow API groupings

Prepare for running multiple API versions on the same HTTP server
by decoupling some of the mechanics of apiserver.  Define a new
APIGroup object which represents a version of the API.
First draft of security doc covering minion/etcd isolation
Etcd can close the watch channel for services

Need to loop and reopen if it's closed.
Merge pull request #859 from smarterclayton/add_security_doc

First draft of security doc covering minion/etcd isolation
Typo in name
move go-dockerclient-copiedstructs to third_party/docker-api-structs
move all third party libs to Godeps/ dir
Merge pull request #882 from smarterclayton/typo_in_path

Typo in name
changed scripts to use godep
change travis.yml to install godep
Add instructions of using godep in README
Merge pull request #842 from smarterclayton/add_api_groups

Extract RESTHandler and allow API groupings
Merge pull request #378 from monnand/godep

Use godep to manage dependencies
Fix a typo in the godep installation instructions.
Merge pull request #881 from smarterclayton/etcd_closes_watch_channel

Etcd can close the watch channel for services
Allow watch operations to run longer than the http.Server timeout

The default http.Server implementation sets a global write deadline
on all handled responses.  Watches depend on waiting for long periods
before returning.  A watch implementation should be able to wait
longer than the default server timeout.

This commit alters watch to hijack the http response writer, gain
access to the underlying connection for setting the write deadline
(which must be reset after every write), and also properly handle
chunked encoding of the http response (it's not possible to game
the write deadline via the ResponseWriter by writing empty lines
because we don't know what the servers deadline is set to).