refactor

Remove return when +{} will do.
seps & guards are private attributes

Set init_arg => undef for seps & guards to prevent user from
initializing them on construction.
Adjust deps

We can use an earlier Scalar::Utill (especially on earlier perls.)  Also
use Moo's correct version string instead of the shortcut.
Refactor BUILD

Cut out a lot of inefficiency by maximizing our use of arrayrefs.  Also,
set up things just once, at the end; no need to reset every time in a
loop.  The same goes for character substitution; just go cut chars off
instead of replacing with space and cutting later.
Make alphabet truly read-only

We munge alphabet at construction, which may surprise some people, so
don't do that and instead make a new private attribute 'chars' which
contains our working alphabet.  Keep the old alphabet attribute as a
true read-only accessor containing the original alphabet.
Make rwp attributes all lazy

These attributes are used internally anyway, so make their accessors
lazily until needed.
Simpler defaults

No need to put strings/scalars in subs for defaults.
Refactor _decode

Early return in void context.  Early init for chars, guards, and seps.
Clearer variable names (hopefully.)
Test for spaces in alphabet

Check for spaces as they're not a valid character for our working alphabet.
Do away with some 'uses'

We depend on at least Perl v5.8.1 in cpanfile, so no need for explicit
v5.8.5 here.  Also remove utf8 pragma, we're not writing more than ASCII
in the module text.
Checking in changes prior to tagging of version 0.05.

Changelog diff is:

diff --git a/Changes b/Changes
index 81d201d..e156d93 100644
--- a/Changes
+++ b/Changes
@@ -2,6 +2,11 @@ Revision history for Perl extension Hashids

 {{$NEXT}}

+0.05 2013-08-26T10:40:41Z
+
+    - Adjust deps
+    - A lot more refactoring
+
 0.04 2013-08-22T18:10:56Z

     - Fix a bug in decrypt() when subclassing