Input:

  numBeacons - total number of beacons to be configured.  Used as hint so
  that the app knows if it has received samples from all the beacons.

  Measurements:
  
  Beacon Names.
  Distances between each pair of beacons.

Output:

  Coordinates of all the beacons.

Algorithm:

  User lays out beacon on the same plane.  The placement of the first
  two beacons are special (see below).

  User launches program, specifying numBeacons as parameter.
  
  Place listener next to each beacon until app notifies the user to move
  onto the next beacon.  This notification comes when:

    1)  The listener has taken distance measurements from numBeacons 
        beacons.
    2)  All the distances have a sufficiently small stddev (parametrized).
  
  App runs an iterative algorithm to compute the coordinate of each beacon.

  Since we must orient the beacon positions with the screen, we make the
  first two beacon measurements special.  The line spanned by the first
  two beacons is coincides with a horizontal 'reference' line near the
  bottom of the screen.  Moreover, to fix the translation offset, the
  first beacon measured fixes the origin of the coordinate system.

  With this assumption, we can further assume that the rest of the
  beacons are above the reference line.  This can simplify the iterative
  algorithm because the first two beacons can now be used as anchor
  points.  A third beacon can be used as anchor to determine whether the
  beacons are above or below the reference line.


Bonus:

  Animate the iterative algorithm.
