Fix T37812, anchored sculpting on a flat plane created artifacts.

This must be an ancient bug, almost as old as anchored brushes
themselves. Code did not do sphere node intersection against original
bounding boxes if an anchored brush required it. In practice this was
not easy to see because vertices were displaced inside brush radius most
of the time. However in the provided report file, displacement was far
away from the brush sphere, making the issue apparent.

Also added original check in proxy combination code (might cause issues
with dyntopo but quick test did not show any) and did some style int ->
bool style changes.
Support for symmetry in gravity.

Also fix previous commit original coordinate change for proxy calculation
(broke all non-anchored brushes -facepalm-) and cache the gravity support
result.
Fix T37387 VIEW3D_OT_view_selected in sculpt mode zooms far from
sculpted object if last sculpt stroke ends outside the mesh.

Code here used the last true location which is invalid in that case,
just reuse the average stroke location instead.
Fix T37830: UILists text now right align.

Simply check for non-embossed TEX buttons inside uiList items, and align their text like labels do.
Fix for T37864, save/save_as blend now refuses to save and report an error, when filepath is not writeable.
Followup for fix T37718: image was not saving with proper settings second time

This was actually a regression after color management re-implementation, need
to copy settings from saved image buffer to an original one since they might
be modified during save.

Also noticed image format planes detection didn't work properly from an image
buffer. Made it so save operator works fine now, but also marked a TODO in
BKE_imbuf_to_image_format() which needs to be investigated further.
Code Cleanup: remove duplicate errorstack
Patch T19235: bmesh comments (with updates)
Sculpting:

* Support for symmetry in lasso masking
* Optimize away symmetry multiplication of gravity vector if no gravity
active
* Move flip_v3_v3 to paint_utils (used in masking as well)
* Use OpenMP for mask flood fill too.
Fix missing F-Curve Generator modifier updates from the Python API.

The poly_order and mode properties were missing update and range, now they
match the UI code.

Reviewed By: brecht

Differential Revision: http://developer.blender.org/D116
Fix T37795: Resetting a button to the default value could crash

Added ui_handle_afterfunc_add_operator so a button can queue an operator
to run without executing it immediately.
Change recent fix for T37864, now only check if the file is readonly

Other error cases are already handled elsewhere
Fix T37003, Fix T37859: smoke modifier taking deforming modifiers into account
in some cases.

The smoke modifier now ignores the modifier evaluation for generated texture
coordinates, which would previously cause the undeformed mesh to be cached for
flow objects. Dynamic paint has a similar exception, and other physics systems
avoid it by not being a constructive modifier.
Fix T37869: vertex paint + wireframe draw mode + smoke domain did not draw correct.
Fix T37861: remove unnecessary error print when viewport rendering a curve that gives an empty mesh.
Raise Python version to 3.3.3.
Fix T37884: cycles hair rendering crash with UV coordinates.

This was broken in a recent bugfix for zero length hairs.
Fix T37890: compositor did not take number of thread setting into account.
UI: restore confirmation popups for delete operators.

It turned out this was leading to accidental deleting in some cases when the
info message was missed by users. Fixes T37801.
Fix for border select doesn't work with normalization enabled

Some lazy developer named Sergey typed zero instead of actual
mapping flag in unit mapping function in the original f-curve
normalization commit.