Makes Enumerable constructor private

Declares enumerate to be a friend of Enumerable, so the enumerate
function is the only place an Enumerable can be instantiated.