The corner case mentioned in the last commit (last line of description) is dealt with here.
Changed "elif not kwargs" to "elif not kwargs or (args and kwargs)".
This basically means that we can have -:
HelioProjective(1*u.deg, 1*u.deg) and get a zeta=0.0km
or we can have -:
HelioProjective(1*u.deg, 1*u.deg, D0=1*u.km) and get a changed D0, with zeta still at 0.0km.
The advantage here is that FrameAttributes must be entered as keywords at all times, which makes tracking them easier.