WIP: Start numeric type for resources

Opening for comments on this approach. Not functional yet.
(We just chatted in person but I had this written up already so still sending it.)

When I say "canonical" here, that's for its serialized form, i.e., when written to disk/JSON/what have you. Clearly, when stored in memory, it should be the way you say.

I'm considering just making separate types for this for the "X * 2 ^ (Y*10)" vs "X * 10 ^ (Y * 3)" cases.

Also consider that, even as written, if someone writes 1.5Gi and then for some reason switches to the 10^3x form, you would see 1610612736, *not* 1.611e9. (Also the canonical form is 1500Mi, not 1.5Gi)