[Extensions] Make BaseSetOperators<T> movable

Make BaseSetOperators<T> (the base class for APIPermissionSet and
ManifestPermissionSet) std::move-able. Also make copying the set require
an explicit method call (Clone()) to ensure that it is only used when a
copy is really required, encouraging callers to use std::move when
possible. Finally, have the PermissionSet constructor accept
APIPermissionSet and ManifestPermissionSet by value instead of by
const& to cut down on copies.

By a simple test, this cuts down on BaseSetOperators<T> copies by around
2x in the browser process on startup.

Bug: 908536

Change-Id: I367dfbd4b4daee4e63475bf781e4eafb52b14d19
Reviewed-on: https://chromium-review.googlesource.com/c/1355844
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Reviewed-by: Dominick Ng <dominickn@chromium.org>
Reviewed-by: Istiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#614022}
32 files changed