SHORTEST_PATH: initial vertice implementation (not compiled) + MAPWIDTH

- vertices_ now holds all vertices properly linked to each other.
  Implementation is an initial uncompiled version
- added constant Util::MAPWIDTH with value of 400
- replaced magic values with it (402 with Util::MAPWIDTH+2)
  so the map is now 2 pixels larger in both directions
SHORTEST_PATH: verticeconnections now follow wall addition/removal
SHORTEST_PATH: vertices updated for Dijkstra and algo started
SHORTEST_PATH: Added vertices and shortest path algorithm

- Vertices added. Adding walls breaks connections and removing
  walls renews the broken connections.
- Shortest path is now calculated with Dijkstra's algorithm
  (in calcPath function) and the path_ is stored in IRoomba. The
  function's return value is the length of the path.
-  Adding/removing walls seems to work with vertices but the
   calcPath is untested
SHORTEST_PATH: fix to verticeconnections when removing walls

- now connections to vertice are renewed when the wall to be
  removed is in its area but no other wall is.
- for implementing above functionality, I added reimplementation of
  type() -function to PoiQGraphicsEllipseItem and
  WallQGraphicsLineItem
SHORTEST_PATH: shortest path initially implemented (untested)

- go2Poi makes selected roombas to calculate their path to Poi
  (calcPath) and chooses nearest ready IRoomba to usePath
- usePath calls go2Point and sets followingPath_ true
- Rest of go2Point calls are done according to booleans
  followingPath_ and prevPointReached_ in sensorUpdateTimerTimeout
SHORTEST_PATH: some fixes done, but still not working correctly

- currently calcPath finds some path to POI and following it
  works. The path is often incorrect. There are probably some
  errors in the vertice connections.
SHORTEST_PATH: Roomba follows shortest path around walls

- finding shortest path with walls in the way works
- removing walls correctly renews connections (not thorougly
  tested)
- roomba follows the path correctly
- currently there are simple lines showing the route to help in
  future debugging
- checkPoiCollision doesn't remove poi to avoid a crash. A more
  clever implementation of the func will avoid the crash
SHORTEST_PATH: begun improvements + bugfix

- fixed a bug related to vertex indexing when adding and removing
  walls. now connections work properly.
- VERTICEWIDTH changed to 10
- added logic to skip some vertices when pushing their centers to
  path to allow following a straight line without too frequent
  stops (which are caused by getting updated location/angle info).
SHORTEST_PATH: path enough far away from walls with small vertices

- changed vertice mechanics and added logic to adding and removing
  walls. bool hasWall is true when there is a wall within vertices
  area. bool blocked is true when there is a wall within vertices
  area or nearby.
- now lines in pathLines_ are added to scene in usePath and removed
  after roomba reaches goal point (in sensorUpdateTimerTimeout)
- not tested with roomba
SHORTEST_PATH: Improvements to adding/removing POIs/walls.

- Trying to add a POI too near a wall now causes a warning.
  Adding a wall removes POIs in vertices that it blocks and
  informs the user about it. Added functions to FleetManager are
  bool isBlocked(QPointF* point) and bool removeBlockedPois().
- overloaded calcPath to have version that gets a POI and stores
  it in destPoi_. When it is reached, FleetManager is called to
  destroy it
- removed checkPoiCollision as unneeded
- changed driving keys to be less annoying. A and D are now for
  turning in place. E and R use radial turning.
SHORTEST_PATH: go2Poi -> go2Pois + go2Poi(*poi)

- Divided go2Poi into go2Pois and go2Poi. go2Pois calls
  go2Poi for each POI, until there is no ready Roomba left.
- A task list for Roombas is needed to allow them to collect more
  POIs than there are ready Roombas
SHORTEST_PATH: "Stop Fleet"-button + small autocapture change

- "Stop Fleet" makes all Roombas to stop and resets everything
  related to following a path. FleetManager's stopFleet() calls
  stop() for every Roomba. Any additions to fleet management
  and roombas will need to have a corresponding reset implemented
  in these functions.
- Changed the order of setting autocapture interval and starting
  autocapture in RoombaRoowifi. The time is still 500 ms due to
  increasing inaccuracy at smaller intervals. The best compromise
  needs more testing (and taking floor material into account)
SHORTEST_PATH: calcPath forms a straight path if possible

- since vertices cause unnecessary turns when there are no walls
  calcPath now attempts to form a straight path by using a
  testLine. If the testLine isn't blocked by a wall, it makes a
  straight path. The straight path is divided into points depending
  on the distance to counter the inaccuracy of going to a point.