Aligned namespaces with Assembly names

Main change is to have Namespaces be consistent with Assembly names. One thing this brings the fore (which I believe is for the best) is references to the Domain layer from the Persistence (which is obviously a separate concern). (the `.Domain` portion of the namespace is for me slightly ugly - I am currently personally experimenting with having 'Domain' assemblies have the simple names and then have e.g. a .Program or .App suffix on the outer app (this also sorts nicely in a flat list of projects) - happy to do some grunt work on that if any of that floats your boat)

Made formatting of `function`s consistent; please bat back if inconsistency is intentionally 'what feels best in a context'

Happy to split into separate SRP-honouring commits if desired

Also:
Minor improvements to messages
Removed straggler reference to `DiscardPile`
Removed blank lines