Use preg_replace_callback on tags which map to tags which map to tags

There is a slippery /e modifier on html_to_bbc() function.

Either turn all of them to anonymous functions or move out the ones that have capturing groups and  treat them separately, either way a foreach is still going to be needed.

I used a simple HTML sample to test it:
``` php
$t = '<table>
 <tr>
   <th>Month</th>
   <th>Save</th>
 </tr>
 <tr>
   <td>January</td>
   <td>$100</td>
   <td colspan="2">Sum: $180</td>
 </tr>
</table>
<hr>lol<pre>eh</pre>';

print_r(html_to_bbc($t));
```

Signed-off-by: Suki <suki@missallsunday.com>