Custom parsers and remove method call madness

added custom parsers without having to use call user func madness, but with a straight forward approach (name, pattern, replace).

this doesn't alter the existing api and should still work with code that's been written with earlier BBCodeParser.