Reduce the need for explicit object allocation and deallocation

AmmOption need not be "new"ed
AmmOption with defaults are created via a stand-alone function.
This allows creating am AmmOption with a default constructor.
System environment knows its own validity