Fix observable-related issues

* Don't react to out-of-range observations (except at end of set)
* Pagination: Revise logic as to which notifications warrant refresh
* Pagination: Update status / navigation on observed total changes
* Pagination: Add keepCurrentPage refresh option
Update docs for Pagination#refresh options
OnDemandList: Prevent errors when no rows are available
OnDemandList: Fix releaseRange logic to work in both directions

Also fixes an off-by-one error
Fix createAsyncStore so sub-collections are also async

This code is based on DeferredWrapper's, but uses declare to extend
instead of object delegation so that the prototype is carried over to
sub-collections.

Note that DeferredWrapper stores currently have the same problem;
we should likely change them to use createAsyncStore as well.
OnDemandList: Release ranges that are immediately discarded
Convert all uses of DeferredWrapper to createAsyncStore

Also refactored the hierarchical stores to a single module with an async flag
Remove unnecessary configuration from Tree functional test page
Update intern.local.js
Tree: Move indentWidth to prototype-level treeIndentWidth
Add Tree#treeIndentWidth unit test
Grid: Move defaultRenderCell to prototype as _defaultRenderCell

Note that it is still called in column definition object context.

Inspired by @sgodden in #375.
WIP resolve test breakage after dstore's update to always-promise APIs
Remove meaningless tests/stores now that dstore always returns promises
Expect promises from totalLength and get()

Use resolved total to determine if rows.max should be set (to a finite
limit)
Use getSync to retrieve non-promise value in test
Merge branch 'master' into dev-0.4

Conflicts:
	CHANGES.md
	extensions/Pagination.js
	package.json
Merge branch 'master' into dev-0.4

Conflicts:
	package.json
Merge branch 'master' into dev-0.4
Reformat Editor and Selector code
Remove UA-specific CSS for desupported browsers in 0.4