RAM RAM I need more RAM!!

miniSSC.h:
  byte lastVal[255];

ouch? I certainly hope that this only gets instantiated once. Even then, I think it's safe to say that the Arduino is NOT EVER going to support 255 simultaneous servos, so you can immediately save a couple hundred bytes here by changing this to a more realistic value... (nit: it should be a #define somewhere too, rather than a hardcoded constant.)

mapper.h:
private:
  double minX;
  double maxX;
  double slope;
  double intercept;

Since you are adding a significant number of these to each joint (?), you might want to check out just how much space the list of mappers is taking vs a simpler data structure like an array with a static maximum size.

The usual argument against C++ at my old stomping grounds was not so much that it was "inefficient", but that it could be silently and "innocently" inefficient. A small piece of normal-looking source code could inadvertently lead to runtime and/or storage problems that were otherwise unexpected. In an embedded system without much (or any) memory protection, this is particularly serious. An Arduino won't tell you that there is no space for the next "new" that your program does, it will just start failing. Sometimes in mysterious ways...