Interactive rebase/squash is tough to find... so here it is.
in Magit status, do l l (log, short-log)
Select the sha1/commit you want to begin squash/pick rebasing...
press E
off you go.
I usually use shell emulator + company for dir/file autocomplete. This is the fastest I've got to staging individuals files or dirs, especially with projects that have a dir depth bigger than 1.
I can also expand them and highlight multiple chunks to stage just those chunks.
The are only two major things I don't know how to do with the current stable version of Magit (1.4). One is starting an interactive rebase. It can take you through the commits and let you edit the buffer, but I haven't figured out if it's possible to start an interactive rebase without using the "!" command line.
The other thing is checking out files in order to revert them, I'm sure there's a way but using "!" and pasting the file names in still seems fastest.
I've also been wondering if it's possible to write a command to manage the `--skip-worktree` status of files, showing which are currently skipped in magit-status-mode. That would be a useful thing for me to have.
This feature has been available for some time, I believe. In magit-status, just select with region the files and then `s` to stage the highlighted files.
Adding git-gutter to the mix will allow staging / reverting at the hunk level.
I should probably note also that in Magit status, the user has to TAB the unstaged file to be able to do region or hunk level staging.
Ideally it would be possible to do it in the buffer in question as well.
Not even git-gutter has region style staging. Hopefully it will be implemented soon. I had a crack at it but time got away from me.