Added support for provider-name in src/*.lisp

* src/protocol.lisp (provider-name): new generic function; return the
  symbol naming a provider
* src/mixins.lisp (name-mixin::name): removed reader; added
  documentation string
* src/macros.lisp (define-provider): pass provider name as :name
  initarg
  (define-register-function): pass provider name to constructed
  provider instance
* src/service.lisp (standard-service::name): added reader service-name
* src/provider.lisp (class-provider): added superclass `name-mixin'
  added reader `provider-name' to name slot
  (function-provider): likewise
* src/package.lisp (package service-provider): added exported symbol
  provider-name
Improved tests in test/{protocol,macros}.lisp

* test/protocol.lisp (header): updated copyright
  (test protocol.service-accessors.designators): added some checks
  (test protocol.find-service.conditions): added documentation string;
  added some comments
  (test protocol.find-service.restarts): likewise; pass expected value
  as first argument of `is'; added some comments; tighter condition
  (test protocol.find-provider.conditions): new test; test conditions
  signaled by `find-provider'
* test/macros.lisp (test macros.define-service.smoke): added
  documentation string
  (test macros.define-service.redefinition): likewise
  (test macros.register-provider/class.smoke): likewise; added some
  checks and comments
Added register-{service,provider} in src/macro.lisp

* The macro `define-service' now expands into a call to the function
  `register-service', reducing the size of the expansion.
* The functions `register-provider/class' and
  `register-provider/function' now call `register-provider', avoid
  duplicated code in their implementations.

* src/macros.lisp (register-service): new function; register a given
  service, performing class changes and instance creation as necessary
  (define-service): expand into call to `register-service'
  (register-provider): new function; register a given provider,
  performing class changes and instance creation as necessary
  (define-provider): expand into call to `register-provider'
  (define-register-function): changed from lexical to global macro;
  added documentation string; added checks in generated function;
  generated function calls `register-provider'
  (define-provider-function): accept function name as a keyword
  parameter
Added service-providers-{a,p}list in src/protocol.lisp

* src/protocol.lisp (service-providers/alist): new generic function;
  return providers as alist
  (service-providers/plist): new generic function; return providers as
  plist
  (service-providers/alist symbol): new method; lookup designator and
  delegate to service object
  (service-providers/plist symbol): similar
* src/mixins.lisp (service-providers/alist provider-list-mixin): new
  method; return providers as alist
  (service-providers/plist provider-list-mixin): new method; return
  providers as plist
* src/package.lisp (package service-provider): added exported symbols
  service-providers/alist and service-providers/plist
* test/protocol.lisp (test protocol.service-accessors.designators):
  added cases for `service-providers/alist' and
  `service-providers/plist'
  (test protocol.service-providers.smoke): new test; test the function
  `service-providers{,/alist,/plist}'
Extensions and fixes in README.org

* README.org (Introduction): fixed typos added link to "Java Service
  Provider Interface"
  (Defining a Provider): wrote initial section body
  (Java Service Provider Interface): new section; link to documentation
  for Java's ServiceLoader and a list of differences