What are the differences between unit testing, integration testing, and system testing in an embedded context?