Refine Canvas to support simple alpha compositing; patch 2

(Canvas::beginTranslucent, Canvas::endTranslucent): New
(Canvas::Impl::beginTranslucent, Canvas::Impl::endTranslucent): New
(Canvas::alphaBlend, Canvas::Impl::shutdown, Canvas::Impl::alphaBlend): Refine
(Canvas::Impl::beginRender): Fix a bug
Canvas.test.cpp: Test beginTranslucent and endTranslucent