:+1: to @astrofrog's plan here of starting out, at least, with the stricter scheme of only allowing the keywords in the correct order.

@astrofrog, with this plan, are you ok with "cheating" a bit and allowing `lon` to be a representation object? (e.g. ``def __init__(self, lon, lat=None, distance=None):``, but `lon` can be a representation object.)  Or do you still think ``def __init__(self, lon, lat=None, distance=None, representation=None):`` is  better?