client: split off the simpler groundwork code from the larger lp:~kdub/mir/notify-buffers-directly branch to reduce diff size.
1) Plumb through connection-wide the BufferFactory and SurfaceMap for the later branch to use in the BufferStream
2) provide a mechanism to cancel buffer requests in the factory
3) refine locking a bit in SurfaceMap.
Approved by Alan Griffiths, mir-ci-bot, Cemil Azizoglu.