unit-testing: test sliding the puzzle up/down/left/right
setup-local-storage: save game state and time passed to local storage
setup-local-storage: update best time if possible when the game is won
Fix bug of first load with no best time
Allow shuffling when initializing the game
time-log: remove the custom directive ngTimePassed. Define custom filter 'duration' to display time
Merge branch 'master' into gh-pages
Merge new feature from branch master
Remove some necessary lines in code
unit-testing: finish testing Board class
Create separate js files for controllers and filters
time-log: fix bug of not saving 'timePassed' each second
animation: define a directive for body so that we can overlay a tile over the empty cell and move it
animation: make the empty tile move following keydown event. Bug exists when click New Game
animation: fix bug of locating the empty cell when New Game is clicked
Merge branch 'master' into gh-pages

Conflicts:
	src/js/app.js
animation: refactor directive code
animation: refactor directive code. Change from directive in body to directive in the div of the zero tile
animation: not using jQuery to reduce loading time
animation: add animation, but still have glitches at the beginning