Give a default implementation of parametric_type_traits for const types.

Given `const T`, this default version will call into
`parametric_type_traits<T>`, making sure any specialisations thereof
are honoured. In the case of `Value_type`, it is left exactly the same
as what the non-const version had. However, for `Rebind`, the resulting
type is of course made `const`.
Correct ForwardIterable concept check and related traits.

Previous assumption about the specification of how begin/end were
supposed to be used for iterables was wrong. Turns out calls to
begin/end should not prefix with 'std', but rely on ADL.
Make maybe forward iterable (again).

Both const and regular iterators are provided, mostly carbon copies of
the former implementation. Also unit tests, including making sure the
ForwardIterable concept check works for maybe.