Bake-API: Test for cyclic node connection

If the active image node contributes to the final material shader
(meaning it's either directly or indirectly connected to an Output Node)
the user will receive an alert about circular dependency.

Similar to what we do for Blender internal the baking will still happen,
but the user will receive the alert which should prevent the image
saving to happen if the result was not intentional.

Core function to check for node output written by Lukas Toenne.

Reviewers: lukastoenne, campbellbarton

Differential Revision: https://developer.blender.org/D673
Buildbot: rework to support branch selection.

Issue with previous code was that branch selected was applied to all repositories.
To be able to control branch on a per-repo basis, we need to use codebases instead.

This commit only enables branch (master/testbuild) and revision selection for master,
we probably do not need this for submodules currently (easy to enable anyway).

Note: tested on local buildbot setup, for linux only (up to build step, have no build env).
Editmesh: Add option to tear boundary vertices when dissolving
Texture painting:

Add ability to select UV layer from the layer panel.
Buildbot: fix to previous commit, to handle svn libs...
Updates/fixes for new UI messages.
Buildbot: more fixes, this time to upload logic.

We do not want testbuild to override 'official' (master) builds!
Revert "Buildbot: more fixes, this time to upload logic."

This reverts commit b1e1646d945d8f7e15c7828a9a5fb0fc4f516f51.

Sorry, was a bit too quick on this one... :/
Buildbot: proper fix for 'testbuild overriding master builds' issue.
UI: Correct code cleanup

Old code commented to reverse list in fact did nothing, replacing with call to reverse broke menu arrowkeys direction.
Freestyle Python API: Updates and speedups for the parameter editor

In addition to D319, this patch updates the parameter editor, the UI of Freestyle.

Using new API functionality and experience gained in making D319, this patch
provides a quite noticable speedup for commonly-used Freestyle linestyle modifiers.

As this patch touches a lot of code (and mainly the foundations) it is likely that
mistakes are made.  The patch has been tested with a regression suite for Freestyle
(https://github.com/folkertdev/freestyle-regression-tests/tree/master), but testing
with scenes used in production is very much appreciated.

Differential revision: https://developer.blender.org/D623

Author: flokkievids (Folkert de Vries)

Reviewed by: kjym3 (Tamito Kajiyama)
A follow-up to Patch D623: minor code updates and style cleanup.
Freestyle: minor revisions of Python API docstrings and comments.
Cleanup: ui_but_is_editable flip return value
Correct last commit
UI: prevent dragging a popup from activating a button
Fix T41149: Dissolve Crash Due to AutoSmooth.

bmesh's 'Join Edge Kill Vert' was using own code to delete loops, instead of
using `bm_kill_only_loop()`, which did not tag loop indices as dirty (causing
the crash), but also did not free loop's CDData...
Material could end up with invalid texture paint slots on changing
engine.
Allow renaming images from list in layers panel by double clicking.

Thanks to Sebastian Koenig for the report!
UI cleanup:

New layer in texture painting will now allow entering image parameters,
similar to new image.