proxy_settings: take settings object directly

We don't really need the view. Though not known to cause any problems
here, others have reported issues with views passed through run_command:

  http://www.sublimetext.com/forum/viewtopic.php?f=6&t=10923#p43062
do away with 'shifting' on first_run
rename first_run to first_update

run may be misleading; it isn't the first time a build is run.
revert c8c7f4d5; restore lost semantics

Originally the first such i is returned; this was lost in translation in
c8c7f4d5. Revert to the next() one-liner (I'm a sucker for them!), and
restore the first-i behaviour by providing a default to next().
factor out placement policy

While we're at it, add some documentation, rename group_other_than to show
that it's private.
refactor placement policy code

- inline choosing of other group
- don't save group-to-avoid, just get it when we need it (since we can
  access the access the view that launched the build anyway)
reduce role-ladenness of 'group'
fix noop-ness of placing view into a group
tweak placement policy
extract prepend into a TextCommand
fix importing of pipe_views
ensure at all times sane values of enabled_setting, scroll_setting
fix implementation of __setattr__

I was getting the exception

  Traceback (most recent call last):
    ...
    File ".\pipe_views.py", line 20, in __init__
    File ".\pipe_views.py", line 17, in __setattr__
  TypeError: super(type, obj): obj must be an instance or subtype of type

This is possibly due to __setattr__() being called at __init__() time,
mentioned in

  http://code.activestate.com/recipes/389916-example-setattr-getattr-overloading/
Merge branch 'rc/settings' into st3
settings callback: assume settings.get() works

Don't have to be so paranoid la. *_setting assignments need to be more
robust; this can't protect us from much.

We were getting the exception

  Traceback (most recent call last):
    File "C:\Users\rc\AppData\Roaming\Sublime Text 3\Packages\sublime-text-2-buildview\commands.py", line 12, in callback
      val = settings.get(s_key, not_found)
    File "D:\Program Files\Sublime Text 3\sublime.py", line 925, in get
      return sublime_api.settings_get_default(self.settings_id, key, default)
  TypeError: Value required

This remains undiagnosed; we just sidestep this.
Merge branch 'rc/placement'
Merge branch 'rc/settings'
Merge branch 'st3'
place build view next to active view, instead of at start
set important values before prepare_copy()

They may be used (in on_view_created()) right after prepare_copy()
returns!