report intrinsticWidth/Height for placeholder drawable
change PicassoDrawable to respect the bounds given by its container

PicassoDrawable scales the bounds it passes to the underlying
BitmapDrawable. Thus, when the bitmap is drawn, it does not respect
the bounds given by the parent (e.g., ImageView), but instead the
scaled bounds.  This breaks features like the ImageView scaleType
attribute.

This commit changes PicassoDrawable to always respect the bounds given
to it (e.g., by the parent ImageView).  Scaling should be applied in
the standard way---by calling setBounds()---and the given bounds are
passed directly to the underlying BitmapDrawable. Thus,
PicassoDrawable should always render the same as a pure
BitmapDrawable.
reassign the PicassoDrawable to the ImageView after changing it

When the Drawable is set, the ImageView caches the Drawable's height
and width and precomputes the scaling matrix.  PicassoDrawable can
change height and width (if the placeholder, error, or bitmap have
different sizes) after being assigned to the ImageView, leading to
incorrect scaling.

This commit changes the PicassoDrawable static setBitmap() and
setPlaceHolder() methods to reassign the drawable to the target
ImageView, forcing the scaling matrix to be properly computed.