Asic Class and the Variant

The basic kernel functionality has been separated from the ASSP and Variant code to make porting to new hardware easier.