Stricter map defined

This is an alternative solution to the problem identified by @austinhyde in #1596.

It attempts to more strictly identify when the map should not be rendered by catching cases that cause `ol.Overlay` to fail.

Feedback welcome. In particular, I'm slightly concerned by extra DOM accesses (`document.contains` and `element.style.display != 'none'`) and their impact on performance, given that `ol.Map#isDef` is called at least once per frame.