Fix a lot of problems in the parse function

Since it's confusing dealing with both `advanced` and... let's say `traditional` links, I've split the handling of each into separate functions. Also there's a lot of other little changes. 
I didn't like that `preg_replace` stuff and doing `$count` this way might be cheaper than `count()`