Interface normalization

This normalization of the interfaces cleans up a number of issues with missing or inconsistent functions across the different client flavors. It includes (or moots) a number of the current outstanding pull requests. I will be marking those as closed while we discuss this commit. 

I would like some feedback on the names of the interfaces, I don't really like Basic* and Advanced* names but didn't want to get bogged down picking a better name.