Treat a redundant connect() as a success.

chrome.bluetoothLowEnergy treats it as a failure.
Fix a bug in which getServices('uuid') would fail to match anything
because JS Strings have a .length property.
Re-create the dialog element on each requestDevice()
so that stray asynchronous operations can't accidentally modify it during the
next call.
Work around Polymer/paper-dialog#43 by moving the stylesheet inside the <paper-action-dialog> element.
Remove the code to check connectability and toggle whether filters matter.

This isn't in our UI designer's mocks.
Maintain a `matchedDevices` list instead of filtering with a <template if>.

This makes it easier to have other sections depend on the number of matched devices.
Centralize dialog-close handling in one event handler.
Remove an unused id.
Use the Chrome App's name instead of its inscrutable origin.

On the open web, we'll use origins, but open web origins are more readable.
Update the requestDevice UI to match our UI designer's mocks.

This adds an unimplemented distance estimate when more than one device is found
and reports that no devices were found if we haven't found any within
Bluetooth's recommended discovery interval.