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
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/placement'
Merge branch 'rc/settings'