Cleanup: warnings
Refactor: BLI_path_util (split out app directory access)

This module is intended for path manipulation functions
but had utility functions added to access various directories.
Refactor: BLI_path_util (part 2)

Use BKE_appdir/tempdir naming prefix for functions extracted from BLI_path_util
Fix T42649: Use Relative Paths for Node Editor & 3D View Images

Images are now added with relative paths to the Node Editor and the 3D View.
Fix freestyle compile.

Do not know why this shows up now, probably a recent tweak in BLI_utildefines.h or so...
Fix BLI_Bitmap - was not usable in BKE area (strict compile flags).
Minor edits to T42649 fix

- only modify paths for newly loaded images
- don't attempt to read from library paths
Cleanup: de-duplicate image drag & drop logic

also don't make library paths relative on image load.
Fix T42618: Lock to view + autokey bug

in fact support for this combination wasn't added at all.
SCons: correct includes after recent refactor
SCons: correct include for win, also minor cleanup
Fix button to add simple UVs not getting removed after pressing it once.
BLI_utildefines: add UNUSED_VARS() macro
Allow explicit control over world background.

Previosuly, world was shown on the background if "Render Only" was used.
Now user should be able to set it independently. This is a prelude to
(drumroll)...
Typo fix (not related to previous drumroll)
Cycles: Log time spent on the BVH build
Cycles: Speedup BVH build for certain compilers

The issue was noticed with gcc-4.7 (used by the release build environment)
which didn't generate optimal enough code for BVH references swap. Seems it
looked up for the assign operator for each of the reference structure members
even though nothing special was required for assignment.

Forcing compiler to use simple memory copy gives speedup of like 2-3 times.

The issue doesn't happen with OSX's clang and new gcc-4.9, but since we're
gonna to stick to gcc-4.7 for official releases for quite some time still it's
nice to have performance issues resolved for all the compilers.

Didn't put the code into #ifdef so if in the future some issues appears with
alignment or assignment which need to happen as an operator we notice this
earlier.
Fix T42710: Use string length for ID user buttons
Politically correct terrible consequencer changes

This patch includes the work done in the terrible consequencer branch
that hasn't been merged to master minus a few controversial and WIP
stuff, like strip parenting, new sequence data structs and cuddly
widgets.

What is included:

* Strip extensions only when slipping. It can very easily be made an
option but with a few strips with overlapping durations it makes view
too crowded and difficult to make out.
* Threaded waveform loading + code that restores waveforms on undo (not
used though, since sound_load recreates everything. There's a patch for
review D876)
* Toggle to enable backdrop in the strip sequence editor
* Toggle to easily turn on/off waveform display
* Snapping during transform on sequence boundaries. Snapping to start or
end of selection depends on position of mouse when invoking the operator
* Snapping of timeline indicator in sequencer to strip boundaries. To
use just press and hold ctrl while dragging.

Reviewers: campbellbarton

Differential Revision: https://developer.blender.org/D904
UI: avoid property lookup for uiItemMenuEnumR