Add the override keyword where applicable on derived classes from coins.h.
Using the override keyword on suitable subclass member functions gives us compile-time assurance that we haven't unknowingly deviated from the signature of base class functions we're trying to override. This avoids situations where calls to "overridden" functions on a derived class actually go to the base class implementation due to potentially subtle differences (e.g. const-ness of arguments).
If others think this is a worthwhile change, I plan on doing this in other applicable regions of the codebase in followup PRs, though I'd be happy to fold all changes into a single PR if that's preferable.