Rewrite the devtools view for Chromium's new devtools architecture

* Refactors the docked devtools implementation by overlapping contents view and devtools view instead of using native split view, see https://code.google.com/p/chromium/issues/detail?id=318751.
* Uses `views` to implement docked and undocked devtools on both Linux and Windows.
This condition is a bit hard to follow. Adding a helper function like `bool ParseMessage(const std::string& message, std::string* method, base::ListValue* params)` might clear it up a bit. Within the helper function you can just `return false` early whenever a condition isn't met.