[B+C] Implement World.getEntities(Location, x, y, z). Adds BUKKIT-3868

## The Issue

There is currently an Entity.getNearbyEntities() method, but no way to perform a similar check on an arbitrary Location without an Entity.

## Justification for this PR

This PR adds the Location.getNearbyEntities method requested in BUKKIT-3868, as well as a World.getEntities(Location, x, y, z) method that backs it. These additional utility methods provide a way for developers to efficiently query for entities within a given area, without needing a source Entity.

## PR Breakdown

### Bukkit

Add Location.getNearbyEntities(double x, double y, double z) and World.getEntities(Location center, double x, double y, double z)

### CraftBukkit

CraftWorld implements getEntities similarly to CraftEntity, except it passes in a null source Entity (given current NMS code, this is safe, the entity parameter is only used with "==" to filter out the source entity) and it creates an AABB rather than using a modified Entity BB.

## Testing Results and Materials

A test plugin can be found here:

https://github.com/NathanWolf/Bukkit-Unit-Tests/tree/Fix-BUKKIT-3868
http://mine.elmakers.com/share/Test-Fix-BUKKIT-3868.jar

This plugin will search for entities at your target block (block under cursor) when you swing (left-click) a stick or blaze rod.

A stick will check within 8 blocks, a blaze rod within 64. It will print a list of entity counts by type in the area, and can be used to validate that the correct entities are found.

## Relevant PR(s)

B-1068: https://github.com/Bukkit/Bukkit/pull/1068 - Associated Bukkit PR

## JIRA Ticket
https://bukkit.atlassian.net/browse/BUKKIT-3868
Is the current guidelines so strict as to prohibit newlines in function
calls everywhere, even if its only to increase readability? This doesn't
really make any sense to me, and I can plenty of places in the CraftBukkit
code that don't follow this guideline, for good reason.


On Sun, Jul 20, 2014 at 5:23 PM, Travis Ralston <notifications@github.com>
wrote:

> In src/main/java/org/bukkit/craftbukkit/CraftWorld.java:
>
> > @@ -664,6 +668,43 @@ public double getHumidity(int x, int z) {
> >          return list;
> >      }
> >
> > +
> > +    public <T extends Entity> Collection<T> getEntitiesByClass(Location center, double x, double y, double z, Class<T> cls) {
> > +        return (Collection<T>)getEntitiesByClasses(center, x, y, z, cls);
> > +    }
> > +
> > +    public Collection<Entity> getEntitiesByClasses(Location center, double x, double y, double z, Class<?>... classes) {
> > +        AxisAlignedBB bb = AxisAlignedBB.a(center.getX() - x, center.getY() - y, center.getZ() - z,
>
> Under the current guidelines, it can't exist.
>
> As for revisiting, I doubt the guideline will disappear but I can bring it
> up.
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/Bukkit/CraftBukkit/pull/1384/files#r15152358>.
>