PathFinding Semi-Functional- Still many bugs to fix

CHANGES
Character.java-
*Now many places use DungeonBuilder.tileChecker() to check if a tile is
valid.

*In charMove, I removed the character argument. Thus, if you want
another character to move, you must run that character.charMove().

*Added overloaded CharMove that takes a valid tile as input and places
this character there.

*Added PathFinder() method in Character that returns a Stack of
DungeonTiles for this character to traverse.
If this character is far from the target, then we only find a path to
within a certain distance of the target and ignore characters on the
way.
If this character is close to the character, then we get the path to the
character, paying attention to characters on the way.

Essentially, I use a priorityQueue to constantly get the cheapest (sum
of cumulative cost and heuristic)available tile until we get the target.

See code for more details or a better idea, look at online examples.
This returns a stack that describes how the character should move.
Works best when there aren't many other characters in the area.

*Changed setDirection to support multiple tile movement

*Modified the getEnemyCharacter method to work for both factions.

*Added a test method goToCharacter() that attempts to follow the target
using PathFinder().

DungeonBuilder.java-
*Moved the regular build to an individual method.

*Created a method, buildTest() that builds a 5x5 room and puts you in
the top left corner. Use this to test new features if they don't work on
the actual floor.

*Added an overloaded spawnPlayer() method that takes in x and y
coordinates and places it there. Useful for pre-constructed rooms
(bosses and test).

*Added tileChecker() method that is used to check if there is a valid
tile there or not.
If its boolean argument is true, it will also check if there is a
character there or not. (true if empty)

DungeonMain.java-
*Added a String that if set to true will run DungeonBuilder.buildTest()
instead of DungeonBuilder.build()

DungeonTile.java-
*Added compareTo() that can be used to easily sort between them.

PathTile.java (A class that stores pathfinding methods and it's own
DungeonTile)-
*Constructor takes in a tile.

*compareTo() prioritizes the PathTiles with the lower sum
PathFindingCost and PathFindingHeuristic.
In case of ties, those with higher PathFindingCost are prioritized
(closer to target). This allows the priorityQueue to work.

*getAdjacentTilesAndSetValues() returns an arrayList of PathTiles that
are not walls and are adjacent to this tile (and are not empty if the
boolean argument is true. This is the case when we want paths that pay
attention to character.). Unfortunately, it also checks if the target
tile is adjacent because the target tile may be occupied.

*setPathFindingValues() is run in the previous method.
We use the Chebychev distance which is essentially the diagonal distance
it would be if there are no walls or characters. It must be larger or
equal to the actual route, which means it's admissible.
To make cumulative costs work, we add the cost of the previous tile to
this one. If we see a tile that was previously looked at, we check if
this is a cheaper route to it. If not do nothing.
Finally, we add the costs of the tiles. So far all of them are 1.

RandomJam.java()
*Temporarily uses the goToCharacter AI.