To add a new BraveVpnService implementation based on Architecture 2.0,
which must co-exist with Architecture 1.0 for quite a while, we need
to split service's interface and implementation. All the external
components will keep accessing VPN service via the BraveVpnService
interface, but the implementation mostly goes into BraveVpnServiceImpl.
This change finalizes the BraveVpnService Architecture 1.0 extraction
based on GN flags. It also splits "components/brave_vpn/browser"
targets in the BUILD.gn into two targets - a shared one and a V1
specific one. The factory is prepared to create different service
implementations, and the V1 tests are ensured to run only when
V1 architecture is enabled by a GN flag.
Implements part of https://github.com/brave/brave-browser/issues/54597