Use an explicit DataNamespace mixin

Currently there is only the "Voice" namespace used in the public gem. References to this namespace are hard coded in the client (for resolving `client.phone_numbers` type queries) and path building (to deal with nested resources). If we want to add extra namespaces, especially internally, it requires manually updating these two hard-coded lists. By making Data namespaces explicit by using a polymorphic class instead of a module, we have an implicit registry of namespaces available to us. It also allows for future behavior changes, such as specifying path components in the DataNamespace directly instead of in the Resource via `namespace` call.

/cc @steved555 @osheroff @yadavsaroj