rename StateBaseDim to StateBaseDimTrait
add a type template dispatch macro
SingleParticle is now extensible
add doc