Relax refspecs accepted by push

The original intent of this change was to enable the pushing of notes (refs under `refs\note\`). The current code current only accepts references that are either `HEAD` or under `refs\heads\` or under `refs\tags\`.

After talking with @carlosmn, my understanding is that push should accept basically refspec where the left side resolves to a commit and the right side is under `refs\`. Please correct me if I misunderstood what is expected here.

This change relaxes the refspecs accepted by push and I believe moves in the right direction towards the ideal behavior, but still does not fully achieve it. This still does not resolve expressions into commits - there are some existing todo's in the code to handle this in the future.

/cc @schu, @congyiwu