Fixes to projectiles and the undead

* Fixed projectiles not registering block and entity hits properly
* Improved the undead AI in terms of navigating into sunlit areas
You know `< std::numeric_limits<double>::epsilon()` is equivalent to `== 0` (assuming no denorms or non-bitwise compares) and just shuts up the warning with out fixing  the problem. The old on was better because it showed what level of accuracy was acceptable.