Stylistic changes
Make State a class with implicit conversion to int
Fix LaserTag::printObs to correctly redeclare the virtual function
Templatize
Un-inherit model from lower bound

Compromise on some compile-time strictness for simplicity.
Modularize upper bound