Use `flat_map`, less objects to create
Optimize Scope.join.

Only two types of invocation are happened all the time: concatenation
of two strings or (less frequently) joining an array into one string.

Why should we support unlimited number of agruments via splat operator
then? No splat - no intermediate array.

If a user really wants to concatenate three or more strings, then they
should be wrapped into an array.
Move test deps to gemspec, skip yard and pry on travis