Fix subclassed "name" overloading

I appear to have made a minor design mistake in how name gets defined.

Due to hard-coding it in the constructor logic, I made it easy for consuming code to replace ( by passing it as an arg explicitly ), but highly impractical for overloading with a subclass, at least, not without very un-idiomatic code.

Attached you'll see a Moo based test that demonstrates the problem, and the fix for the problem in a subsequent commit, making the definition of `name` slightly lazier.