[B + C] Implement per-player view distance, adds BUKKIT-733

**The Issue**
Right now, there is no way for developers to set the view-distance for players

**Justification**
Developers may want to be able to implement per-player, per-world, or per-group view distances. Without this, there is no possible way to modify a player's view distance.

**Summary**
This modifies a variable in the player class. When the player moves, methods are called in PlayerChunkMap, which decides what chunks are to be loaded and sent to the client. I added in some code that replaces the server wide variable with a player specific variable if available.

**Tests**
Plugin code: https://gist.github.com/beechboy2000/6721350
I set my player view distance to 3, and the server wide view distance to 10. I went into freecam and found the edge of the sent chunks. I then went logged into the same server on an alternative account, and found the amount of chunks sent to me were much larger.

**JIRA Ticket**
https://bukkit.atlassian.net/browse/BUKKIT-733

**Related PRs**
https://github.com/Bukkit/Bukkit/pull/933