You could use your own environment, something like the following:
\documentclass{article}
\newcounter{definition}[section] % counter will reset every section
\renewcommand{\thedefinition}{\thesubsection.\arabic{definition}}
\newenvironment{definition}{\refstepcounter{definition}{\bfseries Definition \thedefinition}}{}
\begin{document}
\section{foo}
\subsection{bar}
\begin{definition}\label{testmylabel}
Here is a definition.
\end{definition}
We see in \ref{testmylabel}.
\end{document}
Note that by using \refstepcounter you get the ability to use \label and \ref. If you plan to load any other theorem packages (such as ntheorem), you might like to use a different name for the definition, something like, 'mydefinition', to avoid potential clashes.
Below is a versatile environment you requested
\documentclass{article}
\usepackage{ifthen}
\newcounter{definition}[section]
\renewcommand{\thedefinition}{\thesubsection.\arabic{definition}}
\newenvironment{definition}{\refstepcounter{definition}{\bfseries Definition \thedefinition}}{}
\newenvironment{flexible}[1]{\refstepcounter{definition}%
\ifthenelse{\equal{#1}{def}}%
{%
{\bfseries Definition \thedefinition}%
}%
{%
\ifthenelse{\equal{#1}{prop}}%
{%
{\bfseries Proposition \thedefinition}%
}{}%
}%
}%
{}
\begin{document}
\section{foo}
\subsection{bar}
\begin{definition}\label{testmylabel}
Here is a definition.
\end{definition}
We see in \ref{testmylabel}.
\begin{flexible}{def}
some text
\end{flexible}
\begin{flexible}{prop}
some text
\end{flexible}
\end{document}