Coding style update
	Implement some of the practices recommended in Myers "Effective C++"
	Use auto were practical
	Use override
	Replace typedef with using aliases
	Use forward only on universal references
	Replace return(x) with return x. return(x) is autotyped as a reference.