Functional group naming order?
Generating the systematic names of organic compounds follows the rules for IUPAC nomenclature.

In this system, a name has several parts:


Prefix (meth-, eth-, prop-, but-, pent-, etc.) - which indicates the number of carbon atoms in the parent chain.
Infix (-an-, -en-, -yn-) - which indicates the presence or absence of carbon-carbon multiple bonds in the parent chain.
Suffix (-e, -ol, -amine, -oic acid, -al, etc.) - which indicates the highest priority functional group in the parent chain.
Substituents (bromo-, methyl-, hydroxy-) - indicate the presence of other things on the parent chain.
Locants (the numbers) - indicate where all of these things happen.


You are confusing the roles of infixes and suffixes.


  Infixes


The base infix is -an- indicating no carbon-carbon multiple bonds. The presence of alkenes or alkynes in the parent chain changes the infix to -en- or -yn-, respectively. No other functional group can change the infix, as there are no carbon-carbon bonds of higher order than 3 or lower order than 1. It is also possible to have a complex -enyn- infix if you have both, but let us not worry about that now. In your example compounds:


3-bromo-3,4-dimethylhexane - the infix is -an- because there are no carbon-carbon double or triple bonds. 
but-3-en-1-amine - the infix is -en- because there is a carbon-carbon double bond.
3-aminopropan-1-ol - the infix is -an- again because there are no carbon-carbon multiple bonds. The amine and alcohol functional groups do not consist of carbon-carbon multiple bonds so they cannot change the infix.



  Suffixes


The base suffix is -e, signifying a hydrocarbon with some substituents. Many functional groups change the suffix of a molecule's name, but the name can have only one suffix. If two or more suffix-changing functional groups are found on the parent chain, then the one with the highest priority is chosen to be the suffix and all others become substituents. The common functional groups by decreasing priority are:

functional group     suffix         substituent name
carboxylate anion    -oate         
carboxylic acid      -oic acid      carboxy
ester                alkyl -oate    alkoxycarbonyl or alkylcarboxy
acid halide          -oyl halide    halocarbonyl
amide                -amide         amido
nitrile              -enitrile      cyano
aldehyde             -al            oxo
ketone               -one           oxo
alcohol              -ol            hydroxy
thiol                -ethiol        mercapto
amine                -amine         amino
hydrocarbon          -e             varies by group


The name 3-aminopropan-1-ol is correct. Both the alcohol and the amine cannot change the suffix. Only the higher priority group (alcohol) changes the suffix. The other (amine) becomes a substituent. As mentioned before, neither group changes the infix.


  Substituents


In addition to the substituents listed above, several functional groups are always substituents (which are listed alphabetically in front of the parent name):

functional group     substituent name
alkyl                alkyl
alkyl halides        halo
ethers               alkoxy
nitro                nitro
sulfides             alkylthio


There are some other common substituents that deal with exception cases, like phenyl, aryl, vinyl, methylene, formyl, allyl, and acetyl.