[U4] Creating an absolute-direction character controller

I am attempting to create a hack-and-slash with a character controlled by the keyboard.
The rub here is I want the character to follow the absolute direction of the input.

        mvDir = new Vector3(Input.GetAxisRaw("Horizontal"), 0,Input.GetAxisRaw("Vertical"));
        transform.Translate((mvDir.normalized * moveSpeed) * Time.deltaTime);

The above code moves the target (in this case a plain Cube) fine. But when I want the cube to face the direction is it moving:

if (mvDir != Vector3.zero) transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(mvDir), Time.deltaTime * rotSpeed);

things start to get strange. The cube moves forward when responding to horizontal (W/S) input and backward to vertical (A/D). I have to input a diagonal to make it move sideways.

What I would like to do is:

  1. the character instantly rotates
    and moves by the desired direction
    (think Mario rather than a
    traditional FPS) when pressing the
    key.
  2. the character will not spin around indefinitely on the axis when a button is held: rather; it rotates to face that direction and and moves.
  3. Use a 3rd person cam.

I have attempted multiple solutions to this problem (LookAt,Rotate, etc) but most have come out giving similar problems. LookAt, for one, seems to rotate the cube around the world origin as its axis.

Note that I am using Unity 4.

Translate is moving in local space by default. Specify Space.World.