Fix get_peer_tag behaviour by altering sip parsing.

The get_peer_tag parsing was broken:

Example 1:

    To: test;tag=bla

Example 2:

    To: test;tag=bla
    Other-Header: <bla>

The peer tag would not get read for example 1 because of funky parsing:

- if `>` was found, then the peer-tag would get read
- while that check was essentially created for `<test>;tag=bla`, it did not do what it was supposed to:

        ptr = strchr(to_hdr, '>');
        /* Skip past LA/RA-quoted addr-spec if any */
        if (!ptr) {
            return NULL;
        }
        ptr = strchr(to_hdr, ';'); // not using ptr, but to_hdr

Note: the other parsing functions may need to get altered too, but this is a start that fixes at least this issue. We can improve the other parsing routines later by using the new `internal_*` functions.
Note: uppercase TAG=bla is *not* recognised anymore, see the "case" comment below.
Note: display-names with `;` or `>` in it will still mess up parsing, but that's not new.
Yes. I was a bit unsure what to do here.

a header is built up like this: `Header[ \t]*:[ \t]*(\r\n[ \t]+)*Value[ \t]*(\r\n[ \t]*)*`

But you're right, `[ \t]*:[ \t]*(\r\n[ \t]+)*` is in HCOLON, while the WS after the Value is in the header-value definition itself and may a functional (but stupid) part of a header-value.

I guess I could remove this backward seeking. (I must update the get_call_id_3 and get_call_id_short_2 tests then).