Switch to a more redundant code layout

(This commit acts as a checkpoint in case I screw something
later. On a more disciplinated project, this commit would be
private and I would squash some commits before pushing.)

I suppose each Markdown element will have something special
and different among the others. Thus, having a nice foreach-loop
with all the rules in an array, is probably neat but inneficient
or even it's not a good idea.

Let's switch to one function per entity. There's a lot of code
that repeats. This should probably get refactorized later after
everything works. But for now, it's OK.
Parse setext headers (with bugfix side effect)

setext headers: a header underlined by === or ---. Three(*) or more
= or - may be placed, no other characters must be placed. Examples
of valid setext headers:

Hello
=====

Hi
---

As a side effect, I fixed a bug on my last commit where I forgot
to add a call to remove_tag right before parsing the tags. That
call was before the refactoring. Now it's being called.

(*) I think they are three. In case I'm wrong, I'll fix this.