ML2 Type driver refactor

This commit refactors the ML2 type driver architecture to allow
extensibility to author custom type drivers.

Implements: Blueprint ml2-type-driver-refactor