Write a base X to base Y function
GolfScript, 139 130 128 characters
~]{.,5&lt;{[10,&quot;&quot;*26,{[97+]}%&quot;&quot;*.{32-}%&quot;=/&quot;+++]+}*}2*.,6&lt;{1+}*~:B;.&quot;&quot;?!{1/}*:T;.&quot;&quot;?!{B/}*:S;:Y;:X;B/0\{S?\X*+}%;&quot;&quot;\{.Y%T=@+\Y/.}do;

Most of the characters come from reading and converting parameters and adding the optional ones. The actual conversion is only few chars.
The example inputs are processed as expected:
'88888' 10 2                      # 10101101100111000
'10101101100111000' 2 5           # 10321023
'10321023' 5 32                   # 2mpo
'2mpo' 32 10                      # 88888
'88888' 10 5 '0123456789' ['aa' 'bb' 'cc' 'dd' 'ee'] 1
                                  # bbaaddccbbaaccdd
'bbaaddccbbaaccdd' 5 10 ['aa' 'bb' 'cc' 'dd' 'ee'] '0123456789' 2
                                  # 88888

Edit 1: some minor improvements, esp. coding the digits sequence.
Edit 2: this was an easy one: 0= can be replaced by ! two times in the conversion of the base parameters.