SRAMP-609, SRAMP-547, SRAMP-466: ArtifactBuilder

Really, SRAMP-609 implicitly corrected the other issues.  However, keeping the commits separate for readability.  If this ever needs backported, *all* the commits should be taken in one shot -- don't attempt to separate them.
Should content be an inputstream instead of bytes?  Or perhaps some other fancy content object that can provide access to the content in a number of ways.  I'd be concerned what this will do for large files.