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.
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.
Merge branch 'release'

* release:
  Add virtual keyword to impl_name() method.
  Update release notes
  Make destructor virtual.
  Declare type_name() and impl_name() methods virtual.