Fix non-UTF-8 characters in comments
Measure and layout properly

Fulfil the onMeasure contract by allowing AT_MOST and UNSPECIFIED specs
instead of failing at runtime. In addition, use the view's padding to
make child views smaller, the way it should be. There is one problem,
which is that the ViewFlowIndicator implementations assume that the
scrolled region is the whole width of the container, whereas it might
actually be smaller, so they show wrong positions if left/right padding
is non-zero. This will probably require an interface change to fix.
Avoid views flickering when interrupting a scroll

If you start a new scroll while the scroll animation is in progress,
onInterceptTouchEvent will call mScroller.abortAnimation,
and when computeScroll is next called, postViewSwitched will run.

As computeScroll is called within View.draw, this is not a good time
to be fiddling with the layout by adding and removing children. It
causes the wrong view to be drawn for a frame when this happens.

Instead of calling postViewSwitched immediately,
I've changed it to be posted to the handler so it will be called
after this frame has finished drawing and before the next is laid out.
Handle padding in end-of-carousel scroll limit

My recent change to support padding also necessitates a change to the
touch handlers, when they work out whether we can scroll any further.
It's now necessary to compare the child's right edge with the inner
boundary, not the outer width.
Make stroked circles smaller

by the thickness of the stroke, so that they have the same outer
diameter as filled circles.

In addition, avoid repeated computations in onDraw by changing how
the spacing is stored.
Fix the indicator placement in CircleFlowIndicator

Now that the width of each child (and thus the scroll amount per
page) is not the same as the width of the FlowView,
CircleFlowIndicator must use getChildWidth(), not getWidth(),
to work out how to place the active indicator.