Add IO abstraction framework

This is intended primarily for use as a storage abstraction.
It allows operations such as image-loading to be implemented
in a platform-independent fashion.  Each platform registers
a set of IO drivers during initialisation.  The platform must
also provide a function that will return a device and a specifier
that can be used to access specified content.

Clients of the API will primarily use device and entity handles.
The term "entity" is deliberately vague, to allow for different
representations of content accessed using different types of
specifier, but will often be interpreted as a "file" where the
specifier will normally be its path.

This commit builds, but is intended to be paired with a sample
implementation of "load_image" using a semi-hosting driver on FVP.

Change-Id: Id3b52f1c0eb9ce76b44b99fc6b6460803668cc86
diff --git a/lib/stdlib/std.c b/lib/stdlib/std.c
index ee308b0..4608754 100644
--- a/lib/stdlib/std.c
+++ b/lib/stdlib/std.c
@@ -29,7 +29,7 @@
  */
 
 
-// Include the various implemented functions
+/* Include the various implemented functions */
 #include "abort.c"
 #include "assert.c"
 #include "mem.c"
@@ -37,5 +37,7 @@
 #include "putchar.c"
 #include "puts.c"
 #include "strchr.c"
+#include "strcmp.c"
 #include "strlen.c"
+#include "strncmp.c"
 #include "subr_prf.c"