Return correct hasLineOfSight value for players. Fixes BUKKIT-4634

Prior to this change when a plugin called Player.hasLineOfSite() the
method would always return false because EntityHuman does not extend
EntityInsentient. This commit changes that by explicitly checking for
line of sight between two entities and returning that value.
Add source encoding to the maven compiler plugin.

This change adds the source encoding to the maven compiler plugin, which
will strictly enforce build consistency on multiple platforms and address
possible compilation issues on some of the source files. The source
encoding unintuitively is system-specified by default.
Set current recipe to null when a recipe isn't found. Fixes BUKKIT-2311

This commit restores the diff from 84dbc21aa71b96fd1d2ea40d624b536309118cde
that has since been lost.
Merge with bukkit. needs fixing