Fix line-numbers for PHP in markup

The problem is, that inline php code can be anywhere inside of a html
element. To properly highlight this the php language implementation
temporarily replaces all inline php code with something like `{{PHP0}}`.
After the markup highlighting is finished it replaces it again with the
real code. In the process `\n`s are removed and then added again, which
throws off the line-numbers plugin. Additionally, depending on the order
the hooks are executed, the php implementation replaces the entire code
with `env.element.innerHTML = env.highlightedCode;`, thereby deleting
the line numbers previously added by the line-numbers plugin.

So to fix this, it must be ensured, that the lines are counted before
the php hooks execute, and the line numbering must be added after php
restored the highlighted code. But in the current Prism implementation
there is no way to ensure the order in which the callback functions of
hooks are called.

This patch adds a new optional parameter `index` to the hooks.add()
function. This parameter can be used to insert a callback at a specific
index in the array of callbacks, which allows a certain influence on
the ordering of callback execution.

With this function it is possible to solve the php line numbering bug.