Support update, add, remove hooks in service in src/hooks.lisp

This adds a hook to services (obtainable via the new generic function
`service-change-hook') that runs handlers with the lambda-list

  (EVENT NAME PROVIDER)

where EVENT is :provider-{updated,added,removed} and PROVIDER and NAME
are the provider and its name.

* src/hooks.lisp: new file; contains `service-change-hook' generic
  function and `change-hook-mixin' mixin class
* test/hooks.lisp: new file; contains hooks.smoke test
* test/package.lisp (package service-provider.test): added used packages
  alexandria and let-plus
* architecture.service-provider-and-hooks.asd: new file; contains system
  architecture.service-provider-and-hooks and
  architecture.service-provider-and-hooks-test