Add new PuppetNamespaceObject class

This class is functionally equivalent to the ModuleObject class that YARD uses
for Ruby code. Using a new class allows us to gather YARD objects related to
Puppet and separate them from the Ruby bits.
Small fixes to the namespace_list template helper

The `namespace_list` helper is used to filter YARD objects in order to populate
search lists. The code was originally derived from the `class_list` helper.
This patch guards against calling `children` on objects that have no children
and removes a recursive call to the old `class_list` method.
Move parser functions into a PuppetNamespace

Seperate Puppet parser functions out into a PuppetNamespace so they are no
longer listed with the Ruby methods.