chore(bower): ensure specific version of jquery is loaded

Later in the tutorial we need jquery@1.10.2, but bootstrap has a dependency
on jquery>=1.9.  So if we don't explicitly set the version we will end up
with the latest jquery, which has a different folder layout that 1.10.2.
docs(README): correct misspelling of Replace (originally replac)

Closes #172
chore(package): update to Protractor 0.24

There are breaking changes in this version of Protractor which will be
fixed in later steps.

Closes #170
Closes #171
Closes #173
chore(bower): ensure that bower doesn't try to interact with the user

Closes https://github.com/angular/angular.js/pull/7908
chore(package.json): update protractor and karma

There was a bug in protractor on Windows which is fixed at v1.0.0

Closes #176
Closes #174
fix(phone data): unencode HTML entities

AngularJS will deal with encoding entities when displaying text so we don't
need them to be encoded in the "data store"

Closes #185
chore(test-all): fix path to karma binary
chore(package): fix tmp dependency to fix bower bug

Bower allowed itself to upgrade to a breaking change of the tmp library.
See http://github.com/bower/bower/issues/1404

This is the workaround - it forces npm to pull in the previous version
of tmp.
chore(package.json): explicitly list domain and port arguments in `npm start`

A developer working on a remote server will want to change the IP
address which `npm start` serves on. A developer working on a machine
which is already using port 8000 will want to change the port. By
listing those arguments explicitly, it angular-phonecat makes it easier
for developers who are unfamiliar with npm and are working through the
tutorial to see that they can do so. This should be accompanied by a
sentence in the documentation.

Closes #191
chore(package.json): fix http-server parameters
chore(bower.json): fix name and homepage property

Closes #192
step-0 bootstrap angular app

- add ngApp directive to bootstrap the app
- add simple template with an expression
step-1 static phone list

- Added static html list with two phones into index.html
step-2 angular template with repeater

- Converted the static html list into dynamic one by:
  - creating PhoneListCtrl controller for the application
  - extracting the data from HTML into a the controller as an in-memory
    dataset
  - converting the static document into a template with the use of
    `[ngRepeat]` [directive] which iterates over the dataset with phones,
    clones the ngRepeat template for each instance and renders it into the
    view
- Added a simple unit test to show off how to write tests and run them
  with Karma (see README.md for instructions)
step-3 interactive search

- Added a search box to demonstrate how:
  - the data-binding works on input fields
  - to use [filter] filter
  - [ngRepeat] automatically shrinks and grows the number of phones in the view
- Added an end-to-end test to:
  - show how end-to-end tests are written and used
  - to prove that the search box and the repeater are correctly wired together
step-4 phone ordering

- Add "age" property to the phone model
- Add select box to control phone list order
- Override the default order value in controller
- Add unit and e2e test for this feature
step-5 XHR and dependency injection

- Replaced the in-memory dataset with data loaded from the server (in
  the form of static phone.json file to make this tutorial backend
  agnostic)
  - The json file is loaded using the [$http] service
- Demonstrate the use of [services][service] and [dependency injection][DI]
  - The [$http] is injected into the controller through [dependency injection][DI]
step-6 phone images and links

- adding phone image and links to phone pages
- add end2end test that verifies our phone links
- css to style the page just a notch
step-7 $route and app partitioning

- Introduce the [$route] service which allows binding URLs for deep-linking with
  views
  - Create PhoneCatCtrl which governs the entire app and contains $route
    configuration
  - Load the ngRoute module
  - Map `/phones' to PhoneListCtrl and partails/phones-list.html
  - Map `/phones/<phone-id>' to PhoneDetailCtrl and partails/phones-detail.html
  - Copy deep linking parameters to root controller `params` property for access
    in sub controllers
  - Replace content of index.html with [ngView] directive

- Create phone list route
  - Preserve existing PhoneListCtrl controller
  - Move existing html from index.html to partials/phone-list.html
- Create phone details route
  - Empty placeholder PhoneDetailsCtrl controller
  - Empty placeholder partials/phane-details.html template
step-8 phone details view

- Fetch data for and render phone detail view
  - PhoneDetailCtrl controller to fetch details json with [$http] for a specific
    phone
  - template for the phone detailed view
- CSS to make the phone details page look "pretty"