maybe.hh: fix empty() and add tests
maybe.hh: std::hash doesn't need to be a friend

can just use the public interface