Pagination strategy behaviour
links() :: %{ first: String.t() | nil, last: String.t() | nil, next: String.t() | nil, prev: String.t() | nil }
options() :: Keyword.t()
page() :: map()
paginate( data :: term(), view :: atom(), conn :: Plug.Conn.t(), page(), options() ) :: links()