[Extensions] Remove linked_ptr from ManifestHandler[Registry]

Remove linked_ptrs from ManifestHandler and ManifestHandlerRegistry,
and tweak the ManifestHandlerRegistry interface to be more friendly
about passing ownership.
- Make ManifestHandlerRegistry::RegisterHandler() public, and explicitly
  take ownership of the ManifestHandler.
- Register ManifestHandlers with
  ManifestHandlerRegistry::RegisterHandler() directly, rather than going
  through ManifestHandler::Register().
(The combination of these two changes makes for a less surprising
interface, where we do registry->RegisterHandler(make_unique<Handler>())
rather than (new Handler())->Register())
- Store ManifestHandlers in an unsorted vector in
  ManifestHandlerRegistry, which serves only to maintain ownership.
  Update the maps to only retain raw pointer references.

TBR=halliwell@chromium.org (mechanical change to cast_extensions_api_provider.cc)
Bug: 914401

Change-Id: Ib53c44095e8b91ef768422ab9ecd8d71726da4a5
Reviewed-on: https://chromium-review.googlesource.com/c/1374389
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Reviewed-by: Istiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616880}
8 files changed