Tophat --> Cuffdiff. Cuffdiff will output isoforms.read_group_tracking and genes.read_group_tracking which contains the FPKM values for each replicate.
A simple AWK command would convert it to a tabular form.
Your approach "Run cufflinks on each sample to produce fpkm.gene.gtf. Merge the gtf's for all normals using cuff merge,merge the gtf for tumors similarly to produce two separate assemblies." Merging all the GTFs for all normals is not a good idea as you need FPKM values for each replicate for inputting it to any software like clustering or heatmap. Hence, do not merge all the GTFs from all the normal samples, instead make a tabular format of FPKMs for each replicate.