scope should be a symbol

I just spent an embarrassingly long amount of time of debugging something that eventually led to this fix:

```diff
-      login_as(user, :scope => user)
+      login_as(user, :scope => :user)
```

I think it would be helpful if warden complained when anything but a symbol is passed in for the scope. 

Mabey we could move this to something more memoized. Perhaps something like

    SCOPE_CHECK = Hash.new do |h,k|
       unless k.nil? || String === k || Symbol === k
         raise TypeError, 'Scope must be string or symbol' 
        end
        h[k] = k
    end

    def set_user(user, opts={})
      SCOPE_CHECK[opts[:scope]]
      ....
    end

There's a lot of places where scopes are set/checked and if we're going to enforce this it should probably be enforced everywhere. 

By using a lazy hash, we only have to run the checks the first time it's used.