1) PSoC programmer should be able to read Flash memory (as long as it isn't protected). But it doesn't know anything about the length of the program - you will no to determine that by looking where the erased blocks start.
2) Should be possible, you need to look this up in the GCC linker configuration documentation (but why do you want to do that?)
3) you can provide part of your project as library (lib*.a file), which can then be incorporated during linking. Its not possible during runtime.