Add progress and loading attributes; includes docs, demo, and test.

Use case looks something like:

```html
<input value='{{val}}'>
<core-ajax auto url='/search/{{val}}' loading='{{loading}}' progress='{{progress}}' response='{{response}}'>
</core-ajax>

<template if='{{loading && !progress.lengthComputable}}'>
  <img src='/img/spinner.gif'>
</template>
<template if='{{loading && progress.lengthComputable}}'>
  <paper-progress min='0' max='{{progress.total}}' value='{{progress.loaded}}'></paper-progress>
</template>

<template if='{{!loading}}'>
  <my-results results='{{response.results}}'></my-results>
</template>
```
It's not obvious to me that we don't want to do a defensive copy here. 

What are the options with exposing an object that has readonly fields that folks are going to want to bind to?
 * We could throw an error anywhere that tries to assign to the field (or any value the field has been bound to)
 * We could silently ignore assignments changes to this field (and any value it's been bound to)
 * We could make a mutable proxy object.

Of those options, the first two seem like they're bound to cause problems downstream. Specifically:
 * Do we want to have to write almost every element such that it may not be able to assign to its public fields/attributes? 
 * What should we do if some outside code calls `coreRange.setAttribute('value', '100')` when that range's `value` has been bound to `progress.loaded`?

I'm not dogmatic about this solution, it's just the most obvious fix for the issue I ran into.