Use struct since that was the original declaration

Otherwise we get a warning later when the real thing is defined.
Set linear solver steps in criterion instead of ctor

The constructor that takes the number of steps is deprecated; this
generates needless warnings.
Don't warn about functions not emitted

If a function is used by a template but this template is not
instantiated, the function will still be defined in the header
of a module but it won't be callable because it is in an anonymous
namespace and thus we get a warning.

This only happens in Clang; GCC consider functions referenced from
templates as used.

fixup! Don't warn about functions not emitted
Convert functions in anonymous namespace into statics

These functions are referred to from templates which may not be
instantiated. Since they were in an anonymous namespace they were
not reachable otherwise, and a warning is emitted. This only applies
to Clang; GCC consider them used.

If we make them static helper functions instead, the warning
disappears.
Issue warning if unknown parameters are given
Merge pull request #376 from rolk/376_warn

Quelch needless warnings (found by Clang)