Parsers.config.apply_template() - fix incorrect parsing when duplicate names exist

If user has incorrectly configured nagios to have multiple objects with the same name, the nagios parser surely will get confused.

However we had a bug where multiple objects with the same name, then all duplicates would get lost because cache dictionary was keyed to the name.
Parsers - Rename shadowed built-ins

Legacy code was using keywords like object and buffer, they have now been renamed
Improve readability of the parsers module
Allow handle relative paths in cfg_dir, cfg_file

When nagios.cfg specifies relative paths in cfg_dir and cfg_files
the previous behavior was to make the path relative to current working directory.

After this change, the paths are relative to the location of nagios.cfg which
hopefully better matches what nagios does.

* Fixes #104