Hi!
I would suggest that you start unsig node based approach whend dealing with movment or pathfinding. Nodes are placed in the center of your map cells. Each node contains information about to which other node you can travel from it and movment cost for such movment.
You also handle your units position based on ther center position instead of their TopLeft corner.
So when you are moving your units from one point to another you are simply moving their center position from one map node to another.

Advantages:
- since you store posible movment in node connections you no longer need to always go and check all nearby tiles to figure out if you can move there or not
- becouse you store each posible movment (node connections) for each node you can easily implement one way movment (moving from node A to node B is posible, but moving from node B to anode A is not posible)
- you can have node connection between any two nodes. This alows you to implement things like portals with ease.
- each node connection also stores the movment cost/movment speed so you can easily implement the ability to move faster when going downhill vercus goung uphill.
- most popular pathfinding algorithms bases on node systems so you are already one step closer in implementing any of them.
- by storing aditional value to each node you can easily determine whether a multitile sized unit can move to that tile or not (http://aigamedev.com/open/tutorial/c...d-pathfinding/)

Disadvantages:
- you need to generate and store node graph which could take some time and increases memory consumption
- if using dynamic map loading (chunk based maps) you need to also dynamically update this node graph upon loading and unloading of each chunk.

If you want I can make you a quick and dirty example of this but you will have to wait athleast till tomorow as I need to go to bed now in order to wake up early enough to go to work tomorow.