Declare type_name() and impl_name() methods virtual.

It is more apparent that a method is virtual if it is always
declared as virtual.
Make destructor virtual.
Update release notes
Add virtual keyword to impl_name() method.
Added missing semicolon that was preventing successful build
Merge branch 'Purg-ghp/dev/fix-semicolon-typo' into release

* Purg-ghp/dev/fix-semicolon-typo:
  Added missing semicolon that was preventing successful build
Merge branch 'dev/explicit-virtual-methods' of https://github.com/linus-sherrill/maptk into linus-sherrill-dev/explicit-virtual-methods

* 'dev/explicit-virtual-methods' of https://github.com/linus-sherrill/maptk:
  Add virtual keyword to impl_name() method.
  Update release notes
  Make destructor virtual.
  Declare type_name() and impl_name() methods virtual.

Conflicts:
	doc/rel_notes/0.4.1.txt
Merge branch 'linus-sherrill-dev/explicit-virtual-methods' into release

* linus-sherrill-dev/explicit-virtual-methods:
  Add virtual keyword to impl_name() method.
  Update release notes
  Make destructor virtual.
  Declare type_name() and impl_name() methods virtual.
Add logging

Well, it is not really logging, but it gets
the job done. Config handling was too opaque.
updated release notes
Change log message to indicate algorithm type.