RulesParser: tabfile-naming fixups

o NewParser: Remove someone elses debugging code that got cut-pasted somehow

o NewParser: Avoid trouble-prone __file__ usage; instead, use __module__,
  trim the junk matching the regex '^.*\.', and handle some
  plausible special-cases where this logic might not work

o RulesParser: hard-code the tabmodule filename to something prettier
  than what the above code generates (too many '_''s)...

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
RulesParser: in NewParser, fix buggy filter clauses

Was doing dict(filter(.., dict)) but this is wrong.
Instead need to do dict([list-comprehension(filter(..., dict)))

But now this is getting a bit silly.  This should be refactored somehow.

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
setup.py: Generate the parsetab file during build

Adds a build_parsetabs subcommand to the build command; also extends
clean to remove the generated files.  The files go into the source
directory directly, so that they will get picked up by subsequent
build/install steps.

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
RulesParser.NewParser: load package tabmodules

We have the infrastructure in place to install tabmodules into the
package alongside their class' modules (well in this case, just
the one -- but it would be easily generalized).  However, the tabmodule
still is not used because yacc doesn't look for it in the right place.
Therefore, in NewParser-derived classes, we look to see if an module
named as expected for the parser's tabmodule with the same
Package/submodule parentage as that in which the derived class is
defined (in other words, a sibling module with the expected tabmodule
name) can be imported.  If so, it is used in preference to whatever
yacc wants to use by default.  For example, if:

  FooPackage.BarModule.BazClass

is a NewParser descendant on the python search path, before reverting to
the default tabmodule searching heuristic, it will look for a

  FooPackage.BarModule.BarModule_BazClass_parsetab

module, and supply this as the parsetab to yacc if found.  If BazClass
overrides the parsetab naming scheme and uses 'Baz_PT' instead, it would
look for:

  FooPackage.BarModule.Baz_PT.

This is how RulesParser works -- it will seek a parsetab with the name
RulesParser_ParseTab according to the above pattern, which, not
coincidentally, is the exact place distutils is now installing it.

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>