When compared to the approach I described in #50, this doesn't have
component-raw-version. I realized it's unnecessary as we're already exporting the
version symbol, so extensions can access that slot directly.
This MR no longer restricts the contents of the
version slot. Existing functions for reading the slot (
system-version) now only return the contents of the slot if it meets ASDF preexisting requirements (string of dot-separated natural numbers).
Make version normalization a GF so it can be extended. Add
system-aesthetic-version-string to allow extensions to provide a string representation of their version objects.