Add crypto-square exercise

A bit in doubt about how the queue reads, so I have created an example based on lists - how does that feel in comparison?
```
  Transposed = transpose(Rows),
  rows( Length, 5, Transposed ).
```
and 
```
transpose([]) ->
  [];
transpose(Rows) ->
  HeadsTails = [ split_row(R) || R <- Rows, R /= [] ],
  {Heads, Tails} = lists:unzip(HeadsTails),
  Rest = transpose(Tails),
  Heads ++ Rest.

split_row([]) ->
  {[], []};
split_row([H|T]) ->
  {H, T}.
```
I'm in doubt. My stomach tells me that something on lists and recursion is the right approach, but not sure if I have found the right solution or if I'm on the right track at all.