Add id to glossary entry

After run

~~~
$ make -C pages preview
~~~

the content of `pages/reference.md` is translate into

~~~
<p>...commands and examples...</p>
<h2 id="glossary">Glossary</h2>
<dl>
<dt>Key Word 1</dt>
<dd>Definition of first term
</dd>
<dt>Key Word 2</dt>
<dd>Definition of second term
</dd>
</dl>
~~~ 

And there a link in `pages/01-one.md` to `reference.html#key-word-1` (or similar) will not work. This pull request try to address this issue.

## Expected Translation

~~~
<p>...commands and examples...</p>
<h2 id="glossary">Glossary</h2>
<dl>
<dt id="key-word-1">Key Word 1</dt>
<dd>Definition of first term
</dd>
<dt id="key-word-2">Key Word 2</dt>
<dd>Definition of second term
</dd>
</dl>
~~~ 

or


~~~
<p>...commands and examples...</p>
<h2 id="glossary">Glossary</h2>
<dl>
<dt><span id="key-word-1">Key Word 1</span></dt>
<dd>Definition of first term
</dd>
<dt><span id="key-word-2">Key Word 2</span></dt>
<dd>Definition of second term
</dd>
</dl>
~~~ 

## Implementation Design

For

~~~
key
:    definition
~~~

Pandoc's AST is

~~~
[{"unMeta":{}},[{"t":"DefinitionList","c":[[[{"t":"Str","c":"key"}],[[{"t":"Plain","c":[{"t":"Str","c":"definition"}]}]]]]}]]
~~~

and for

~~~
<span id="foo">bar</span>
~~~

is

~~~
[{"unMeta":{}},[{"t":"Para","c":[{"t":"Span","c":[["foo",[],[]],[{"t":"Str","c":"bar"}]]}]}]]
~~~

So we want to have

~~~
[{"unMeta":{}},[{"t":"DefinitionList","c":[[[{"t":"Span","c":[["key",[],[]],[{"t":"Str","c":"key"}]]}],[[{"t":"Plain","c":[{"t":"Str","c":"definition"}]}]]]]}]]
~~~

that will be translate into

~~~
<dl>
<dt><span id="foo">bar</span></dt>
<dd>definition
</dd>
</dl>
~~~

## How to test

~~~
$ pandoc -t json pages/reference.md|tools/id4glossary.py| pandoc -f json -t html
<p>...commands and examples...</p>
<h2 id="glossary">Glossary</h2>
<dl>
<dt><span id="key-word-1">Key Word 1</span></dt>
<dd>Definition of first term
</dd>
<dt><span id="key-word-2">Key Word 2</span></dt>
<dd>Definition of second term
</dd>
</dl>
~~~

## TODO

- [x] <del>Merge `tools/id4glossary.py` and `tools/blockquote2div.py` into `lesson_filter.py` or something similar.</del> Keep filters as separate files inside a tools/filters.
- [x] <del>Update `pages/Makefile` based on the merge of `tools/id4glossary.py` and `tools/blockquote2div.py`.</del> Update `pages/Makefile`.
- [x] Create validation for links to glossary. **Leave for another pull request**.