Request.pm: Isolate generated 'ua' from user provided 'ua'.

By default, the value of 'ua' should be generated by MetaCPAN::Client,
and used **only** by MetaCPAN::Client, and Search::Elasticsearch should
be left to produce its own one.

However, if the user specifies a 'ua', then that 'ua' should be used for
both MetaCPAN::Client and Search::Elasticsearch.

Allowing users to specify their own 'ua' has risks of breaking things,
such as not injecting the right headers by default, so it is users
responsibility to get that part right.

Likewise, when we're using Search::Elasticsearch without needing any
'ua' customization, we should let it create its own one, which is more
likely to be "correct"

Implementation choices:

  previously; ->new( ua => )  mapped to ua =
      and ->ua returns that value verbatim.

  now: ->new( ua =>  ) maps to _user_ua
      and ->ua still returns that value verbatim.

However, the fact '_user_ua' is merely a predicate means we can later
do:

  my %cfg = (
       ...
  );
  if ( $self->_user_ua ) {
    cfg{handle} = $self->_user_ua;
  }
  Search::Elasticsearch->new( %cfg );

Wheras that wouldn't work with a pure 'ua', because 'has_ua' would
return true as soon as it had ever been lazy-built.
Request.pm: pass the user specified ua if one was passed.
Role::Entity.pm: Add an optional, lazy loaded 'client' attribute.

This allows clients to create objects that remember who created them,
and thus allow created objects to call subsequent requests sharing the
Clients configuration options. ( Especially in regard to UA )

If no such attribute is passed, the it will be created on demand when
needed.

This will make existing code continue to function even if it doesn't use
the MetaCPAN Client base directly.
Author.pm: use new client attribute instead of creating one
Client.pm: Make sure to pass the MetaCPAN Client to constructed objects.
t/ua_trap.t: Add a basic bad-ua-passing test that fails due to ES calling HTTP::Tiny directly

This presently fails on the existing MetaCPAN::Client but is fixed in
the pull request containing this test.
Changes: Add details about ua/client pass around
Add .mailmap in case anyone ever does x_contributors from git
Merge pull request #17 from kentfredric/master

Retain 'ua' when user specified wherever possible.