General cleanup to make List code less brittle.

1. Move the code to search for <d-list-store> sub-node from startup() to preCreate().
This simplifies the code and removes assumption that the List
contains [just] two direct children, this.containerNode and this._loadingPanel.

2. Remove assumption from _showLoadingPanel() that this.containerNode is a direct child
of this.
Convert List and Pageable to use templates, and move the next/previous buttons to
be outside the containerNode (but inside the scrollNode)

The loading panel and the next/previous buttons now always exist; they are just
shown/hidden depending on the List state.