Make procedures that are part of a generic public
This prevented compilation with Intel 2018 Beta and solves issue #54. It turns out you can only override type-bound procedures that are accessible in the module where you override them, thus they have to be private. A "deferred, private" type bound procedure could only be overriden from the same module (or a submodule thereof). Many thanks to Igor Vorobtsov from Intel for clarifying this.