Why do I need to include libraries used in other libraries?
If I remember correctly this is in fact a limitation of the Arduino IDE.

If you use a better IDE (personally I use Eclipse with the Arduino plugin) it works as it should, i.e. if you include a library A that includes another library B, then in the end you won't get compile-time errors and both B and A will be included in the final binary.