[CDCDevice] refactor and prepare for subclassing
[CDCDevice] refactor and prepare for subclassing

Since there are multiple subclass of CDC, we should probably emulate
more than a single one.
In this commit I refactored the CDC-related classes and added some CDC
constants. Now it should be easier to implement a new CDC subclass.

To keep it functional, CDC ACM device was implemented and it is the
default device being created when a cdc device is specified. It's
bmAttributes field was changed from 3 to 1, for simplification. Might
change that in the future.

nccgroup/umap2,nccgroup/umap2