Hey powerpants!
We didn't really build on top of ST's libraries... they exist and support all the peripherals, but we found them very frustrating to work with and are covered under an ambiguous license. They are a good reference though, and programs written using them will run fine on a Maple (though not following the Maple's labeled pin numbers etc).
We did build upon the libc and newlib libraries used as part of the GCC toolchain. Perry is the expert on this, but I believe these libraries are completely portable across all Cortex-M3 chips, mostly portable across all ARM chips, and to some degree portable across... all GCC targets?
What /doesn't/ exist in this whole ecosystem is the equivalent of the wonderful AVR-LIBC (http://www.nongnu.org/avr-libc/ ), which targets only Atmel AVR chips. This is the hole we are trying to bridge with the core part of libmaple, which is all lower-level C, though it will take a lot of work to get it that mature, portable, and efficient. The wirish section of our library is C++ and provides the (partial) Arduino library compatibility.
The most useful "reference" material we use while writing the first implementation of libmaple is the hardware reference guide from ST: http://www.st.com/stonline/products/literature/rm/13902.pdf . This defines all of the hardware registers that we access from C to bring up the hardware peripherals. There is also a programmer's manual, but it is targeted at assembly-level coding, I suppose for high performance optimization, operating system development, etc. The "Insider's guide to the STM32" (google it) is a really good overview of the hardware features (eg, instruction set, bitbanding, clock domains, etc).
I could point you to more ARM-specific documentation, ST application notes, the CodeSourcery compiler docs, etc if you are interested. The ST peripheral library itself seems to be mostly documented in READMEs and comments in the source code.