ignore Intellij IDEA related files
questions.yn: Perform string, not identity, comparison against 'y'

The `is` operator performs object identity comparison.  Changing to `==`
implements the expected behavior.

Use the mock library to add tests verifying the API of questions.yn.
callbacks: Use Raise=True for nested limit errors

Signed-off-by: James McCoy <vega.james@gmail.com>
Alias: Restore recursion limit and limit memory use

The (faulty) detection of recursive Aliases was removed in
a656fd06930541103c70297825d6f5f5956ecc45, claiming that "our nesting
limit will catch issues now."  However, nested Aliases weren't actually
increasing the nesting level.

Actually increasing the nesting level when an alias is executed restores
the intended behavior.  Additionally, limiting the size of the
expanded arguments to an alias prevents exponential growth of memory
usage for certain malicious inputs/aliases.

Signed-off-by: James McCoy <vega.james@gmail.com>
release: Remove reference to freshmeat^Wfreecode

freecode.com, nee freshmeat.net, is now a completely static site.  Since
it is no longer allowing updates, no need to worry about pushing
information about Supybot releases to it.

Signed-off-by: James McCoy <vega.james@gmail.com>
callbacks: Properly handle nested command errors

Using Raise=True was only papering over the real problem in the nested
command error handling.  The actual issue is that we were trying to
return an IrcMsg from NestedCommandsIrcProxy.__init__.  Dropping
Raise=True and moving return to its own line is the correct fix and
resolves the test failure in testMaximumNestingDepth.

This commit reverts 7838cae3bc5f23c271c8baba0630d6969d8f1b55

Signed-off-by: James McCoy <vega.james@gmail.com>
Anonymous: Move "say $nick" functionality to new tell command

Allowing Anonymous.say to send a message to either a nick or an
(implicit) channel through the use of first('nick', 'inChannel') changed
the behavior of the command by making it impossible for 'inChannel' to
take effect.

This meant that any previous users of the command that expected "say
some text" to send "some text" to the current channel would instead try
to send "text" to the user "some".  Depending on the value of
conf.plugins.Anonymous.allowPrivateTarget, this would result in either
an error or a strange message to a random user.

Creating a new tell command solves this issue as Anonymous.channel now
goes back to its simple 'inChannel' wrapper.

Signed-off-by: James McCoy <vega.james@gmail.com>
Merge remote-tracking branch 'supybot/master' into testing

Conflicts:
	.gitignore
	plugins/Alias/plugin.py
	plugins/Anonymous/plugin.py
	plugins/Anonymous/test.py
	setup.py
	src/callbacks.py
Make dependency on python-mock optional.