will_paginate view helper support

refs CNVS-8796

WillPaginate provides a view helper that takes a
WillPaginate::Collection and produces previous/next links along with
page links.

unfortunately, it's not very smart about open ended collections (no
known last page) and non-ordinal collections (no page numbers), such as
folio makes possible.

override key methods to fix these shortcomings. specifically:

 * will_paginate checks whether total_pages on the collection <= 1 and
   returns nil if so. but total_pages should never be 0, and when
   total_pages is nil, the < portion breaks. so change it to just check
   if it's == 1. we can't use a method chain to augment the existing
   method to avoid the error, so instead we have to just copy over the
   method definition with that one change.

 * page_entries_info returns a string like "Displaying items 10-19 of 26
   in total". But when the collection is non-ordinal, we don't know
   whether we're on items 10-19 vs. 30-39; and when the collection is
   open ended, we don't know how many there are in total. We could add
   specific cases for each of these, and might eventually, but for now
   we'll just return nil in these cases.

 * in the LinkRendererBase, the pagination method will include "random
   access" links to select pages if the "page_links" option was given as
   true. these links cannot be calculated (and would be meaningless) for
   non-ordinal collections, so just force the "page_links" option to
   false for non-ordinal collections (during prepare).

 * the windowed_page_numbers method doesn't need any adaptation for
   non-ordinal collections, but we want to include a gap marker to
   indicate the open-endedness of an open ended collection.

 * the total_pages method is only used to find "where should the list of
   random access page numbers end". letting it return nil (e.g. for open
   ended set) would cause problems in methods such as
   windowed_page_numbers. since this is only used in that context, it's
   ok to return next_page in that case (since either next_page or
   last_page will *always* be set in an ordinal collection).

 * in the LinkRenderer, previous_page and next_page are called to build
   up html fragments for the links to the previous page and the next
   page, e.g. a link with text "<< Previous" and url pointing at the
   previous page. the default implementation in WillPaginate calculates
   the page value of the previous/next page explicitly, assuming ordinal
   pages. Instead, just read the values from the collection.

 * the link method in the LinkRenderer assumes it's receiving either nil
   or a page value. this assumption is correct, but the manner in which
   it distinguished them was by asking if the parameter was a Fixnum,
   rather than if it wasn't nil. This is obviously incorrect for
   non-ordinal collections, so fix it.

 * similar to the previous_page/next_page methods, the rel_value method
   was calculating the next/previous/first page values to compare to,
   under the assumption of an ordinal collection. fix it to just look at
   the values from the collection.

Change-Id: Iceafdf12c60bae885ae1b92353eea4edac22dc4d
Merge branch 'master' into legacy

and downgrade view helpers overrides to 2.3.16

refs CNVS-8796

* override of WillPaginate::ViewHelpers#will_paginate downgraded to the
  implementation from WillPaginate 2.3.16

* LinkRendererBase#windowed_page_numbers becomes
  LinkRenderer#windowed_links, which returns link strings, not page
  numbers; the override needs to insert a gap html string, not a :gap
  marker value.

* other LinkRendererBase overrides moved unchanged into LinkRenderer

* LinkRenderer#previous_page, #next_page, and #link don't need
  overriding in 2.3.16

* target for LinkRenderer overrides is WillPaginate::LinkRenderer, not
  WillPaginate::ViewHelpers::LinkRenderer

Change-Id: I36103b0c5c76767efe8f579881fe441f6f6f64e3
bump version

Change-Id: I37146953acca3c62eef69a347d533db88ab7c5dd