Settling minmax assumptions + tests

I've added some relevant assumption methods for minmax, including tests. It was weird, but I had to add the method `_eval_is_irrational` and `_eval_is_noninteger` - for some reason, there's no proper mixin here, and even if the max was evaluated to be `real=True` and `rational=False`, it didn't conclude that it is `irrational=True` - so I've added it manually.
On Thu, Dec 25, 2014 at 11:26:27PM -0800, Peleg wrote:
>    Perhaps something like
> 
>  def _eval_has_property(self, property):
>      p = lambda arg: getattr(arg, property)
>      if all(p(arg) for arg in self.args):

Just getattr(arg, property) instead of p(arg).

>          return True
>      if any(p(arg) is False for arg in self.args):
>          return True
> 
>  ...
> 
>  def _eval_is_algebraic(self):
>      return self._eval_has_property('is_algebraic')
> 
>    ?

Yes, something like that.  But I'm fine with the current
implementation.