Cleaning up inconsistent use of decltype and Container::size_type. Now only using decltype to reduce requirements on input containers. Using 'using' to locally refer to size_type.