improvements to poem.py

a new PoemError class to replace most warnings,
better detect_numbering(), more documentation,
and some minor tweaks