Implement heading ids.

- Tags removed.
- Non-alphanumeric characters converted to hyphens.
- Duplicate hyphens squashed.
- Lower case.